我想要完成的就是将用户的电子邮件字符串设置为我的数据库中的键。我的问题似乎是,每当我使用分配给常量的键设置字典时 updateChildValues 方法就会崩溃 - 在本例中为 userEmail。如果我将 key 更改为字符串文字,它就可以正常工作,但这不是我打算构造此数据库节点的方式。
guard let uid = Auth.auth().currentUser?.uid, let email = Auth.auth().currentUser?.email else {
// handle
return
}
let groupId = UUID().uuidString
let userGroupIdValue = ["groupId": groupId]
let groupName = ["groupName": text]
let userEmail = [email: 1]
Database.database().reference().child("groups").child(groupId).child("memberEmails").updateChildValues(userEmail, withCompletionBlock: { (error, reference) in
// handle errors
})
如果我将 userEmail 字典更改为 ["someText": 1] 它就可以正常工作,常量 userGroupIdValue 和 groupName 也是如此。通过我的故障排除,似乎此方法不喜欢 Auth.auth().currentUser 中的电子邮件属性这一事实?以前是可选的,即使我使用的是保护声明。我也使用 if let 语句来展开,但它仍然崩溃。这可能是一个错误吗?
最佳答案
Firebase 支持人员回复了我,问题似乎是解开的电子邮件地址包含“.”。字符串中,并且该字符不允许与其他几个字符一起在数据库的键中使用。 super 令人沮丧,但至少我有一个答案。
关于ios - Firebase - 当从常量中设置字典中的键时,updateChildValues 会使应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52529814/