【发布时间】:2021-01-06 01:46:42
【问题描述】:
我试图像这样将我的测验数据保存到 Firestore 中
db.collection("Quizzes").addDocument(data: ["Author": userEmail,
"quizTitle": quizTitle,
"quizDescription": quizDescription,
"quizDictionary": quizDictionary]) { (error) in
if let e = error{
print("There was an erorr saving the data to the Firestore \(e)")
}
单击将执行此代码块的按钮后,我的应用程序崩溃并打印以下错误
020-09-19 17:17:46.367783+0800 Quizzler[18001:782362] -[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xc4cd28a1a98b5156 2020-09-19 17:17:46.469546+0800 Quizzler[18001:782362] *** 由于未捕获的异常“NSInvalidArgumentException”而终止应用程序,原因:“-[__NSCFNumber 长度]:无法识别的选择器发送到实例 0xc4cd28a1a98b5156”
在做了一些调试后,我发现"quizDictionary": quizDictionary 部分是导致崩溃的原因。为什么会这样?我以为.addDocument(data: )这个方法接受[String: Any]?
如果无法将 Dictionary 对象保存到 Firestore,有哪些解决方法?
如果需要,这是我的字典声明 dictionary declaration
【问题讨论】:
-
我猜密钥必须是
String,所以你不能有[Int: Something],但需要[String; Something]。根据错误,知道在 JSON 中它的键必须是字符串,这不会让我感到惊讶。 -
您绝对可以将字典保存到 Firestore。了解您的数据的实际外观(在问题中!)而不是向我们展示变量会很有帮助。说明 addDocument
accepts [String: Any]?不太准确,因为 Any 必须是受支持的数据类型之一(如答案中所述)。此外,您的 Int: 是一个 CreateQuizModel object,它听起来并不像 Int(0、1、2 等)
标签: ios swift firebase dictionary google-cloud-firestore