在我的应用程序中,我对特定的孩子使用Database.database().isPersistenceEnabled = truefirebaseReference.keepSynced(true)
但在Firebase文档中,它指出,如果应用程序已脱机,则事务不会在应用程序重新启动时持久化:
swift - 如何在Swift 4中跟踪Firebase iOS的脱机交易-LMLPHP
是否有一个委托或观察者或其他东西告诉我哪些事务失败了,以便我遵循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/

10-12 00:11