swift - Firebase Firestore 可以保存一个字典,其中条目属于带有枚举的自定义类型吗?
问题描述
在 Firestore 中存储自定义类型时,我得到以下信息:由于未捕获的异常“FIRInvalidArgumentException”而终止应用程序,原因:“不支持的类型:__SwiftValue”。
struct Reply: Codable {
var acceptance: Acceptance
var date: Date
enum CodingKeys: String, CodingKey {
case acceptance
case date
}
}
enum Acceptance: String, Codable {
case Pending = "Pending"
case Accepted = "Accepted"
case Rejected = "Rejected"
}
这些类型用于创建表单的字典
var replies = [String: Reply]()
其中String
key 用于将 a 关联userId
到 user Reply
。
但是,当我尝试将replies
变量存储为 Firestore 文档的字段时,我得到了该异常。
db.collection("SomeCollection").addDocument(data: ["Replies": replies]) {...}
为什么?
谢谢!
解决方案
目前Firebase Firestore
只支持特定的数据类型如:
- 大批
- 布尔值
- 浮点数
您可以在此链接上查找更多类型。话虽如此,不幸的是,Reply
它是一种自定义类型,不会被Firebase
. 我的建议是分解您的自定义类型,直到您可以使用 Swift 类型(Array、String、Int)并Reply
通过Acceptance
使用Strings
之前保存到Firebase
.
推荐阅读
- database - Mongo shell 聚合管道错误:“未知运算符:$nor”
- java - 解码无法正确解码
- elasticsearch - 如何忽略弹性搜索查询中的 number_format_exception 错误
- android - MANAGE_EXTERNAL_STORAGE 权限
- winapi - 管道输入时gcc错误的文件描述符错误
- javascript - 将 HTML 输入(文本框和收音机)导出到 CSV 并使用 Javascript 将该 CSV 文件导入到 HTML 输入
- python - 为什么 LightGBM 回归的 SHAP 平均值为零?
- c# - Xamarin 中的 Flex 布局
- azure - 如何列出应用服务 ( Webapp ) 运行时?
- python - os.system() 与 os.popen() 使用 bash 进程替换时:ls: cannot access '/dev/fd/63': No such file or directory