2017-02-01 1 views
1

それは私が新しい価値のを設定するには、このコードを使用する必要があることを述べているドキュメントで:値の代入は削除され、古い値の

self.ref.child("users").child(user.uid).setValue(["username": username]) 

この方法で、私は、ユーザー名を設定することができます。

var XPPoints = 1  
self.ref.child("users").child(user.uid).setValue(["XPPoints": XPPoints]) 

これは、しかし、ユーザ名の値、または以前に保存した他の値を削除します。私はXPのポイントと同様に、後に別の値を追加したい場合は、私は次のコード行を使用します。それはすべての価値を置き換えます。 私ものドキュメントが言っている二つ目試してみました:このコード行であるhttps://firebase.google.com/docs/database/ios/read-and-write#basic_writeを:起動時

self.ref.child("users/(user.uid)/username").setValue(username) 

これは即座に私のアプリがクラッシュします。私の質問は:どのように私はデータを追加することができ、古い値を置き換えることはできませんか?

編集: はにコードを変更することで、それを修正:。 self.ref.child( "ユーザー/ \(user.uid)/ユーザ名")のsetValue(ユーザー名)

+0

'user.uid'は実際の値に置き換えてください。ドキュメントは、これがプレースホルダーであることを意味するか、この例ではエラーが発生しています。これを試してください: 'self.ref.child(" users/\(user.uid)/ username ")。setValue(username)'。このようにして、適切なユーザuidが供給されるので、実際のパスは "users/100/username"のようになります。 –

+0

ええ、私はそんな奴だ。ありがとうございました! – Petravd1994

答えて

5

あなたのソリューションが解決してはいけませんあなたが持っている問題。 setValueの代わりにupdateChildValuesを使用する必要があります。これは、参照されたノードのすべてを上書きするのではなく、値を追加します。

+0

どういう意味ですか?なぜ私はそれをいつ使うのでしょうか? setValueは私のためにうまくいきます... – Petravd1994

+0

setValueはすでに設定されている他のすべての値を置き換えることがあなたの質問で言及されていますが、正しいですか? –

関連する問題