为了进行测试,我关闭了网络连接。我已禁用缓存:
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 循环的断点处进入)。如果我打开网络,它就会进入网络(而不是快速的缓存循环)。
我如何区分空的但成功的退货和网络连接问题?