我是Firebase的新手,不知道如何最好地解释这个,但我会尝试.
我想让我的应用为每个用户创建一个条目.然后,每个用户条目具有多个(0到n)子条目,其中每个子条目是简单的字符串.基本上有一个用户ID(主条目),它们的任务是子条目.
现在我的问题是每当我将数据(子条目)推送到主条目时,所有先前的子条目都被删除,只推送最新的子条目.我一直在仔细查看文档和谷歌搜索,但似乎没有任何工作.
我试过这个:
@IBAction func testWrite(sender: AnyObject) { let def = NSUserDefaults.standardUserDefaults() let uid = def.valueForKey("uid") let root = Firebase(url: getFirebaseURL()) let text = self.tempText.text! let dataRef = root.childByAppendingPath(uid as! String) let data = ["test": String(text)] dataRef.setValue(data) }
使用“test”键和“text”的值附加到user-id条目正常
那么我杀了应用程序并将其更改为:
@IBAction func testWrite(sender: AnyObject) { let def = NSUserDefaults.standardUserDefaults() let uid = def.valueForKey("uid") let root = Firebase(url: getFirebaseURL()) let text = self.tempText.text! let dataRef = root.childByAppendingPath(uid as! String) let data = ["CHANGED": String(text)] dataRef.setValue(data) }
我想要做的可能是递增(可能有一个数字键?)逐个添加项目而不删除其他条目.
我希望这是有道理的:P和任何帮助都非常感谢!
解决方法
这里发生的是,您将整个分支(Users / UserID ##)设置为一个值,该值是单个节点Changed:< somestring>
从概念上讲,将您想要设置的密钥视为另一个分支可能会有所帮助,例如(Users / UserID ## / TaskID ##)
从概念上讲,而不是像这样接近它:
Users / UserID = Key:Value
像这样接近它:
Users / UserID / Key = Value
注意:在为其分配值之前,不必存在分支Users / UserID / Key.
例如,您可以将您的引用更改为要添加或更改的子项的指向:
let dataRef = root.childByAppendingPath(uid as! String + "/Task001") dataref.setValue(String(text))
我同意你正在做的是开始学习Firebase的好方法,以及它是如何工作的.但是一旦开始,不要生成并使用自己的密钥作为子任务列表,请查看childByAutoId,它会自动为您创建子项,还有更多,并且更容易管理和编码.
编辑:建议在下面提到弗兰克的更好答案.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。