我想在文本字段内编辑后更新子值。

目前,我有以下操作:

@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/

10-12 04:01
查看更多