在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]()
其中CCD_ 1密钥用于将CCD_ 2与用户CCD_。
但是,当我尝试将replies
变量存储为Firestore文档的字段时,会出现异常。
db.collection("SomeCollection").addDocument(data: ["Replies": replies]) {...}
为什么?
谢谢!
当前Firebase Firestore
仅支持特定的数据类型,如:
- 数组
- 布尔值
- 浮点数字
您可以在此链接上查找更多类型。话虽如此,Reply
是一种自定义类型,不幸的是Firebase
不会接受它。我的建议是分解您的自定义类型,直到您可以使用Swift类型(Array、String、Int(,并通过使用以前保存到String
1的Strings
构建Acceptance
来重建Reply
。
根据Miguel Tepale的回答,检查是否为零值。如果您的字典或正在分配的数据具有null值,则可能会出现此问题,因为它无法决定其类型。