gpt4 book ai didi

ios - Firebase iOS SDK `setValue` 完成调用不一致

转载 作者:行者123 更新时间:2023-11-30 13:05:14 25 4
gpt4 key购买 nike

使用时:

func setValue(value: AnyObject?, withCompletionBlock block : (NSError?, FIRDatabaseReference) -> Void)

作为 Firebase iOS sdk 的一部分,启用持久性时,完成 block 的调用将会不一致。

我意识到,如果没有网络连接,则不应调用完成,并且它将在本地更新,并且仅在将数据发送到服务器时调用完成,但是我可以观看在中创建的记录firebase 控制台和我被调用的完成 block 仍然不一致。

如果我关闭 persistanceEnabled,调用将按预期运行。

这是我的方法。 ref 是 FIRDatabaseReference ,而 json 是 json 形式的对象表示形式

func lightSave(completion: FBModelUpdateCompletion? = nil) {
print("Light Saving \(ref)")
ref.setValue(json, withCompletionBlock: { (error, result) in
print("finished saving")
if let error = error {
print(error.localizedDescription)
}
completion?(error: error, object: self)
})
}

最佳答案

“我意识到如果没有网络连接,则不应调用完成”

事实并非如此——当没有网络连接并且您打开了 persistenceEnabled 时,完成 block 也会被调用。

此处的基本原理是,您应该让 Firebase 数据库成为您应用中的一个真正的数据源,并且如果您必须开始担心自己是否已连接并在已连接时依赖数据库更新或者自己手动管理,如果你不这样做,事情会变得困惑。

因此,如果您未连接到数据库但打开了 persistenceEnabled,Firebase 会处理“我正在将数据更新到本地缓存以便稍后保存”调用,就像在线数据库本身已更新一样,这样您就可以继续将您的 Firebase 引用视为准确的数据源。

关于ios - Firebase iOS SDK `setValue` 完成调用不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39476006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com