Firebase setValue() 在模拟器上工作,但在设备上不工作,有人知道为啥吗? iOS 10,斯威夫特 3.1

Posted

技术标签:

【中文标题】Firebase setValue() 在模拟器上工作,但在设备上不工作,有人知道为啥吗? iOS 10,斯威夫特 3.1【英文标题】:Firebase setValue() works in simulator but not on device, anyone know why? iOS 10, Swift 3.1Firebase setValue() 在模拟器上工作,但在设备上不工作,有人知道为什么吗? iOS 10,斯威夫特 3.1 【发布时间】:2017-04-15 16:41:59 【问题描述】:

此代码会根据模拟器的要求保存到 Firebase 数据库,但不会在设备上调用完成处理程序。有谁知道为什么或可能的修复?

var customersRef : FIRDatabaseReference 
            return dbRef.child("customers")
    


func saveDealData(dealBuilder: DealBuilder, errMsgHandler: ErrMsgHandler?) 
            print("Shown in log in sim and device")
            customersRef.child(u.id!).child("deals").childByAutoId().setValue("true")  error, dbRef in
                    print("Is called for sim but not device")

            
    

我已经尝试摆脱尾随闭包并将其放入 setValue() 如下,但同样的情况发生了:

  customersRef.child(u.id!).child("deals").childByAutoId().setValue("true", withCompletionBlock:   error, dbRef in
                    print("Is called in sim but not device")
            )

【问题讨论】:

【参考方案1】:

通过将 Swift 字符串转换为 NSString 来修复此行为。

如下:

customersRef.child(u.id!).child(("deals" as NSString)).childByAutoId().setValue("true")  error, dbRef in
                print("Is now always called")

        

【讨论】:

以上是关于Firebase setValue() 在模拟器上工作,但在设备上不工作,有人知道为啥吗? iOS 10,斯威夫特 3.1的主要内容,如果未能解决你的问题,请参考以下文章

Firebase 实时数据库 setValue() 不工作

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

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

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

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

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