gpt4 book ai didi

ios - 如何将 Firebase 数据保存到数组中

转载 作者:可可西里 更新时间:2023-11-01 01:57:46 24 4
gpt4 key购买 nike

我有一个这样建模的 Firebase 数据库:

: users
: some-random-id-1
- username:"user1"
- email:"email1@gmail.com"
: some-random-id-2
- username:"user2"
- email:"email2@gmail.com"

我正在尝试遍历数据字典中的所有用户,并将用户名附加到文件中的列表中以用于其他目的。我创建了一个字符串数组 (userslist) 变量并在 viewdidload() 中,我在下面编写了以下代码:

    ref = Database.database().reference()
ref?.observe(.value, with: { (snapshot) in
let dataDict = snapshot.value as! NSDictionary
let x = dataDict["users"] as! NSDictionary
print(x)
print("--------")
for user in x{
let y = user.value as? [String: String]
let z = y!["username"]
print(z)
self.userslist.append(z!)
print(self.userslist)
print("NEXT")
}
})
print(self.userslist)

在快照的括号内,当我打印 self.userslist 时,我可以看到每个元素都被添加了,但是当我最后一次在括号外打印时,它显示为一个空数组。我认为这些元素仅附加在这些括号的范围内,因此我无法在其他任何地方访问填充的数组。我该如何解决这个问题,以便我可以使用我附加的数据?

最佳答案

您正在观察者之外使用 print(self.userslist) 并且 Firebase 在异步模式下运行

因此,如果您使用断点,您会注意到

print(self.userslist) 在控件到达 Database handler 之前被调用,

数据正在获取您需要使用Dispatch main queue将您的 View 加载到该处理程序中

    ref?.observe(.value, with: { (snapshot) in
let dataDict = snapshot.value as! NSDictionary
let x = dataDict["users"] as! NSDictionary
print(x)
print("--------")
for user in x{
let y = user.value as? [String: String]
let z = y!["username"]
print(z)
self.userslist.append(z!)
print(self.userslist)
print("NEXT")
}
/// Here is your data
print(self.userslist)
})
/// Called before Handler execution
print(self.userslist)

关于ios - 如何将 Firebase 数据保存到数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50109590/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com