在我的应用程序中,我对特定的孩子使用Database.database().isPersistenceEnabled = true
和firebaseReference.keepSynced(true)
。
但在Firebase文档中,它指出,如果应用程序已脱机,则事务不会在应用程序重新启动时持久化:
是否有一个委托或观察者或其他东西告诉我哪些事务失败了,以便我遵循Firebase的最佳实践建议,并将它们存储在本地脱机数据库中?
我没有得到一个对象,告诉我交易是否失败,或没有失败?
open func uploadObject<T: ClientObject>(of type: T.Type, with firebaseQuery: FirebaseQuery, object: T, completion: ((Error?) -> Void)? = nil) {
let query = firebaseQuery.queryPath
let path = firebaseQuery.firebasePath.getPath(with: query, subPath: firebaseQuery.subPath)
let prefix = firebaseQuery.firebasePath.prefix
let serialized = object.serialized
let child = path + prefix + object.uuid
if object.uuid.isEmpty {
let message = Log.Message.uuidMissing("Object UUID is empty for: \(child) object: \(serialized) at: \(#file), \(#function)")
Log.notify(message)
}
self.reference.child(child).setValue(serialized) { error, _ in
Log.error(error, at: #function, line: #line)
completion?(error)
}
}
最佳答案
对于用户脱机时擦除的事务,没有回调或委托。如果你想让你的应用程序优雅地处理脱机情况,你不应该依赖代码中的事务。
关于swift - 如何在Swift 4中跟踪Firebase iOS的脱机交易,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51508064/