更新 Firebase 中的值

Posted

技术标签:

【中文标题】更新 Firebase 中的值【英文标题】:Updating values in Firebase 【发布时间】:2017-07-24 19:02:11 【问题描述】:
func updateFirebase()
    myFun = thisIsMyFunTextView.text
    IAm = iAmTextView.text
    var profileKey = String()
    profileRef.queryOrdered(byChild: "uid").queryEqual(toValue: userID).observe(.value, with:
        snapshot in
            for item in snapshot.children 
                guard let data = item as? FIRDataSnapshot else  continue 
                guard let dict = data.value as? [String: Any] else  continue 
                guard let profileKey = dict["profileKey"] else  continue 
                self.profileRef.child(profileKey as! String).child("bodyOfIAM").setValue(IAm)
                self.profileRef.child(profileKey as! String).child("bodyOfThisIsMyFun").setValue(myFun)
        
    )

@IBAction func backButtonClicked(_ sender: Any) 
    updateFirebase()
    DispatchQueue.main.asyncAfter(deadline: .now() + 4, execute: 
        self.dismiss(animated: true)
    )

myFun 和 IAm 由用户对文本视图的更改成功定义。如果不触发这个 for in 循环,我无法提取 childByAutoID 值,该循环一旦调用就不会结束,即使出现新的视图控制器也会继续。 “bodyOfThisIsMyFun”在此循环期间在旧值和新值之间摇摆不定,而“bodyOfIAM”会立即正确重新定义并保持应有的状态。如何获取提取的新值来替换此处的旧值?

【问题讨论】:

【参考方案1】:

我需要在 for...in 语句的末尾添加这行代码: self.profileRef.removeAllObservers()

【讨论】:

以上是关于更新 Firebase 中的值的主要内容,如果未能解决你的问题,请参考以下文章

如何更新firebase数据库特定键中的值

如何在特定时间后更新firebase数据库中的值,比如10分钟后?

需要将firebase远程配置中的值更新为我的plist

更新 Firebase 中键的值

使用 Swift 更新 Firebase 中的子值

“无法转换类型的值” - Firebase Swift 中的错误