swift - 当 iPhone 处于飞行模式时未调用 Firestore addDocument 完成处理程序
问题描述
这里是深夜,我很长时间没有使用 Firebase,所以我可能会在这里遗漏一些东西。
但是当设备在airplane mode
或网络不可访问时,这个完成处理程序永远不会被调用。
我该怎么处理这个?我会假设err
会声明一个错误,但是isLoading = false
当没有连接时,永远不会到达闭包内。
func addUser() {
var ref: DocumentReference? = nil
ref = db.collection("users").addDocument(data: [
"first": "Ada",
"last": "Lovelace",
"born": 1815
]) { err in
if let err = err {
print("Error adding document: \(err)")
} else {
print("Document added with ID: \(ref!.documentID)")
}
isLoading = false
}
}
解决方案
Firestore 不会在网络不可用时返回错误,因为它不认为这是一个错误,因为它具有离线功能。写入操作排队,直到连接返回,然后自动重试。
推荐阅读
- postgresql - 无法在 RDS Postgres 中创建外部数据包装器
- postgresql - 尝试设置一个用户访问另一个用户对象时出现“必须是角色成员”错误
- c++ - VMMap 报告 ~100 GB 分配
- c# - Visual Studio Xamarin.Forms 调试:如何进入外部库方法?
- mysql - 使用存储过程从给定数组创建一个新表
- python - 乳房 X 线照片中最大轮廓的 OpenCV 分割
- php - 从文件/数组中编辑/样式化文本并将其按顺序放回,样式化?
- python - 错误:命令“gcc”失败,退出状态为 1. pip3 install openpiv
- javascript - 组件中的道具如何发挥作用
- dart - 如何使函数类型安全?