2016-10-11 13 views
0

Firebaseの一部のユーザーから情報を取得しようとしています。
これを行うには、私は渡されたユーザーのIDに基づいてユーザーを選択するクエリを実行しています。
問題は、私のコードでユーザー全体を取得しようとすると、ユーザーオブジェクト内に別のobject
があり、最後のオブジェクトしか取得できないということです。Swift 3で辞書が内部にあるFirebaseプロセスの子スナップ

これは、ユーザーが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] 

答えて

0
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) 
           } 
         }) 
:私は、この例では次の出力を得ます

スナップショットにはすでにユーザーのすべての情報があります。

1

データベース:

enter image description here


コード:

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] 
関連する問題