2017-04-23 64 views
2

我想要在文本字段內編輯後更新子值。使用UpdateChildValue從Firebase進行編輯

目前,我有這樣的動作:

@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] 
} 

當我運行它確實表明該項目的編輯值斷點但是更新似乎並不被執行。

回答

1

只是要更加安全,試着從你的路徑落下領先斜線:

databaseRef.child("usersList/\(key)") 

...並嘗試打印由火力地堡返回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)") 
+0

沒有變化仍然 – mninety5

+0

奇怪,但沒有錯誤,它通過。然而沒有任何變化。 – mninety5

+0

請仔細檢查您的代碼是否實際使用了預期的Firebase應用程序,以防萬一您創建了多個(用於測試等)。 –