2017-04-23 11 views
2

テキストフィールド内で編集した後に子値を更新したいと考えています。UpdateChildValueを使用してFirebaseから編集する

私はこのアクションを持っている瞬間

:私はthis tutorialに従っていました

@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") 

    } 

が、彼は、ユーザー名を使用しているようだ、と私は唯一の認証と電子メールまたは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)") 

を...とあれば、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)") 
+0

まだ変化がありません – mninety5

+0

奇妙なものですが、エラーはなく、それは通過します。しかし、何も変わらない。 – mninety5

+0

複数のコードを作成した場合(テストなど)、あなたのコードが実際に期待されるFirebaseアプリケーションを使用していることを再度確認してください。 –

関連する問題