来自Firebase的Swift中的SetValue删除了旧值

时间:2017-02-01 22:50:02

标签: ios swift firebase firebase-realtime-database

在文档中,它说我应该使用此代码来设置新值:

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

这样,我可以设置用户名。但是,如果我想稍后添加其他值,比如XP点,我使用以下代码行:

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

但是,这会删除用户名值或之前存储的任何其他值。它取代了所有的价值。 我还尝试了文档所说的第二件事: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)/用户名&#34)。的setValue(用户名)

1 个答案:

答案 0 :(得分:10)

您的解决方案不应解决您遇到的问题。您需要使用updateChildValues代替setValue。这会添加值而不是覆盖引用节点中的所有内容。