在 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 进程子快照的主要内容,如果未能解决你的问题,请参考以下文章

在 Swift 的异步调用中包含返回处理程序

EXC_BAD_ACCESS 代码=2 在 Podfile 中包含 Firebase/Auth

致命错误:注册后索引超出范围(Firebase、Swift)

在 React App 中包含 firebase 时出现 TypeError

在 FCM(Firebase 云消息传递)中,在通知中包含令牌是不是安全?

在 Firebase 云函数中包含异步函数(eslint“解析错误:意外的令牌函数”)