我想在文本字段内编辑后更新子值。
目前,我有以下操作:
@IBAction func updateAction(_ sender: Any) {
guard let itemNameText = itemName.text, let itemDateText = itemDate.text else { return }
guard itemNameText.characters.count > 0, itemDateText.characters.count > 0 else {
print("Complete all fields")
return
}
let uid = FIRAuth.auth()?.currentUser?.uid
let key = item.ref!.key
let itemList = Item(itemName: itemNameText, itemDate: itemDateText, uid: uid!)
let editItemRef = databaseRef.child("/usersList/\(key)")
editItemRef.updateChildValues(itemList.toAnyObject())
print("edited")
}
我正在关注this tutorial,但他似乎使用了用户名,并且由于我只有电子邮件或uid(用户ID)作为身份验证,因此我认为我会使用uid。
这是我类中的toAnyObject函数:
func toAnyObject() -> [String: AnyObject] {
return ["itemName": itemName as AnyObject, "itemDate": itemDate as AnyObject, "userID": userID as AnyObject]
}
当我运行断点时,它确实显示了项目的编辑值,但是更新似乎没有执行。
最佳答案
为了更加安全,请尝试删除路径中的前导斜线:
databaseRef.child("usersList/\(key)")
…并尝试打印Firebase返回的
Error
(如果有):editItemRef.updateChildValues(itemList.toAnyObject()) {
(error, _) in
if let error = error {
print("ERROR: \(error)")
} else {
print("SUCCESS")
}
编辑。我们发现他使用了错误的数据库路径。正确的是:
databaseRef.child("users").child(uid!).child("usersList/\(key)")
关于ios - 使用UpdateChildValue从Firebase编辑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43577830/