首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从firestore读取数据并将其保存到本地数组中

问从firestore读取数据并将其保存到本地数组中
EN

Stack Overflow用户
提问于 2021-05-25 00:05:49
回答 1查看 31关注 0票数 0

我想从users集合中检索用户名并保存到数组中。我使用的是:

代码语言:javascript
复制
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循环之后数组重置为[]?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-25 01:35:05

您的代码中没有任何内容会导致此行为。您要么打印了错误的数组,要么是其他东西覆盖了它,这似乎不太可能。我注意到您并没有引用带有self的数组,这是您在这个闭包中需要做的。因此,出于测试目的,请重命名该阵列。

代码语言:javascript
复制
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)
            }
        }
    }
}

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67675367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档