如何处理网络连接问题(Firebase FireStore)?

时间:2018-08-04 14:31:34

标签: ios swift google-cloud-firestore

为了进行测试,我关闭了网络连接。我已禁用缓存:

    settings.isPersistenceEnabled = false // https://firebase.google.com/docs/firestore/manage-data/enable-offline -- done to help demonstrate async handling

即使在日志中看到此错误,我仍未设置错误

  

2018-08-04 10:26:26.441529-0400基于行为的通知   原型[52077:2250670] 5.4.1-[Firebase / Firestore] [I-FST000001]   无法到达Cloud Firestore后端。连接失败2次。   最近的错误:错误域= FIRFirestoreErrorDomain代码= 2   “网络错误(例如超时,连接中断或无法访问   主机)。“ UserInfo = {NSLocalizedDescription =网络错误   (例如超时,连接中断或主机无法访问)   }。这通常表明您的设备没有   目前,互联网连接状况良好。客户将在   离线模式,直到它能够成功连接到后端为止。

有关的代码段:

        DBIFirebase.db.collection(URI).getDocuments() { (snapshot, error) in
            if tx < 1 {
                print("returned from Firebase TX when tx count is exhausted, dropping")
                return
            }

            if let error = error {
                // in either case, there was a previous error
                print("Firestore error loading data for app \(app) - \(error.localizedDescription)")
                callback(samples, Errors.firebaseError)
                tx = 0
                return
            }

错误始终为零。文档始终为空。


编辑:

在那之后,如果让出错,我会用它来处理文档。

            guard let documents = snapshot?.documents else {
                print("no documents for app \(app)")
                callback(samples, nil)
                tx = 0
                return
            }

            for document in documents {

我设置了一个断点。错误被视为nil。进入此块会跳过它( guard 块不会触发,我说的是从 for 循环的断点处进入)。如果我打开网络,它就会进入网络(而不是快速的缓存循环)。


我如何区分空的但成功的退货和网络连接问题?

0 个答案:

没有答案