setValue() 的完成导致 Firebase 崩溃,Swift 3

Posted

技术标签:

【中文标题】setValue() 的完成导致 Firebase 崩溃,Swift 3【英文标题】:Completion of setValue() causes crash Firebase, Swift 3 【发布时间】:2016-09-17 16:17:10 【问题描述】:

我目前正在将应用程序更新到 Swift 3 和 ios 10。问题是每当我使用时:

    self.ref.setValue(value, withCompletionBlock:  (error: Error?, _:FIRDatabaseReference) in
            //Code
        )

应用程序在没有任何关于它为什么会这样的信息的情况下崩溃。如果我删除完成,它工作正常。

【问题讨论】:

确保您的 ref 不是 nil,很可能是。 @Dravidian 我应该在完成时还是之前检查? 尝试打印之前...... @Dravidian 不是零 你是在模拟器上运行还是在设备上运行?那么值呢,尝试打印。也尝试将(error: Error?, _:FIRDatabaseReference)替换为(err, snapRef) 【参考方案1】:

试试这个代码,我希望这能解决问题

// U can use this to set value to your database
func setValue() 
    let myRef = FIRDatabase.database().reference().child("Your path")
    let valueForChild: String = "newValue"
    let newValue = ["childName": valueForChild] as [String: Any]
    myRef.setValue(newValue)  (error, ref) in
        if error != nil 
            print(error?.localizedDescription ?? "Failed to update value")
         else 
            print("Success update newValue to database")
        
    


// or this to update new value to your database
func updateValue() 
    let myRef = FIRDatabase.database().reference().child("Your path")
    let valueForChild: String = "newValue"
    let newValue = ["childName": valueForChild] as [String: Any]
    myRef.updateChildValues(newValue)  (error, ref) in
        if error != nil 
            print(error?.localizedDescription, "Failed to update value")
         else 
            print("Success update newValue to database")
        
    

【讨论】:

以上是关于setValue() 的完成导致 Firebase 崩溃,Swift 3的主要内容,如果未能解决你的问题,请参考以下文章

错误:TimeoutException Future 未完成并且 TypeError:T.as 不是 _Future.new 的函数。[_setValue]

在 Swift 3 中将数据添加到 Firebase 而不是 SetValue

Firebase 聊天应用 setValue 在公共数据库中失败?

如何修复“java.lang.NoSuchMethodError:com.google.firebase.database.DatabaseReference.setValue”

Firebase 数据库中的 setValue() 方法不起作用。值未添加到数据库中

setValue和push方法之间的区别[重复]