在 Swift 3 中包含字典的 Firebase 进程子快照
Posted
技术标签:
【中文标题】在 Swift 3 中包含字典的 Firebase 进程子快照【英文标题】:Firebase process child snap that has dictionary inside it in Swift 3 【发布时间】:2016-10-11 19:45:17 【问题描述】:我正在尝试从 Firebase 中的某些用户那里获取信息。为此,我正在运行一个查询,该查询根据我传递的用户 ID 选择用户。问题是,在用户对象内部,还有另一个 object
和 当我尝试在我的代码中获取整个用户时,我只得到最后一个对象。
这就是用户在 Firebase 中的样子:
USERIDHERE
"coins" : 4850,
"name" : "Jogador 1020",
"score" : 22,
"unlocked" :
"000" : true,
"KA0293" : true
这是获取用户的代码
ref.child("users").child(key).observeSingleEvent(of: .value, with: (snapshot) in
for snap in snapshot.children.allObjects as! [FIRDataSnapshot]
if let dict = snap.value as? Dictionary<String,AnyObject>
print(dict)
)
当我打印字典时,我没有得到所有用户信息,而是在这个例子中得到以下输出:
["000": 1, "KA0293": 1]
【问题讨论】:
【参考方案1】:数据库:
代码:
let ref = FIRDatabase.database().reference()
let refUsers = ref.child("users")
let refUser = refUsers.child("123")
refUser.observeSingleEvent(of: .value) (snap: FIRDataSnapshot) in
if snap.exists()
if let dict = snap.value as? [String: Any]
print(dict)
打印输出:
["unlocked":
000 = 1;
KA0293 = 1;
, "name": Jogador 1020, "score": 22, "coins": 4850]
【讨论】:
【参考方案2】: ref.child("users").child(key).observeSingleEvent(of: .value, with: (snapshot) in
// you can get your user's name like below:
username = (snapshot.value as? NSDictionary)?["name"] as! String
if let dict = snapshot.value as? Dictionary<String,AnyObject>
print(dict)
)
快照已经有用户的所有信息。
【讨论】:
以上是关于在 Swift 3 中包含字典的 Firebase 进程子快照的主要内容,如果未能解决你的问题,请参考以下文章
EXC_BAD_ACCESS 代码=2 在 Podfile 中包含 Firebase/Auth
致命错误:注册后索引超出范围(Firebase、Swift)
在 React App 中包含 firebase 时出现 TypeError