【问题标题】:reading data from firestore and save locally in an array从 firestore 读取数据并在本地保存在数组中
【发布时间】:2021-08-12 22:53:00
【问题描述】:

我想从用户集合中检索用户名并保存在一个数组中。我用这个:

var usernames:[String] = []

override func viewDidLoad() {
    super.viewDidLoad(
    
    populateUsernames()  
}

func populateUsernames() {
    let db = Firestore.firestore()
    db.collection("users").getDocuments() { [self] (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                let username = document.get("username") as! String
                usernames.append(username)
                print(usernames) //THIS PRINTS ["user1", "user2"] WHICH IS CORRECT
            }
            print(usernames) // THIS PRINTS [] WHICH IS FALSE
        }
        
    }   
}

为什么在for循环之后数组会重置为[]?

【问题讨论】:

    标签: ios arrays swift firebase google-cloud-firestore


    【解决方案1】:

    您的代码中没有任何内容会导致此行为。您要么打印错误的数组,要么正在覆盖它,这似乎不太可能。我注意到您没有在此闭包中使用 self 引用数组。因此,重命名数组以进行测试。

    var usernames2: [String] = []
    
    override func viewDidLoad() {
        super.viewDidLoad()
        populateUsernames()
    }
    
    func populateUsernames() {
        Firestore.firestore().collection("users").getDocuments { (snapshot, error) in
            if let snapshot = snapshot {
                for doc in snapshot.documents {
                    if let username = doc.get("username") as? String {
                        self.usernames2.append(username)
                        print(username)
                    } else {
                        print("username not found")
                    }
                }
                
                print(self.usernames2)
            } else {
                if let error = error {
                    print(error)
                }
            }
        }
    }
    

    您还粗略地解析了这些可能无害但仍然不安全的文档,此代码解决了这些问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-12-16
      • 2015-05-22
      • 1970-01-01
      • 1970-01-01
      • 2021-09-20
      • 1970-01-01
      相关资源
      最近更新 更多