首页 > 解决方案 > 当 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
        }
    }

标签: swiftfirebasegoogle-cloud-firestore

解决方案


Firestore 不会在网络不可用时返回错误,因为它不认为这是一个错误,因为它具有离线功能。写入操作排队,直到连接返回,然后自动重试。


推荐阅读