私は以下のfirebase構造を持っています。 Firebase Structureswiftを使ってfirebaseの特定のキーの値にアクセスする
「ユーザー」はルートで、キーは「Uid」です。特定の "Uid"のキーの特定の値にアクセスするにはどうすればよいですか?
例:M5j80aAlmCS3Jcbh0aA3T4Tfzxv1という「Uid」を持つ特定のユーザーの「mobileno」を取得したいとします。
私は以下のfirebase構造を持っています。 Firebase Structureswiftを使ってfirebaseの特定のキーの値にアクセスする
「ユーザー」はルートで、キーは「Uid」です。特定の "Uid"のキーの特定の値にアクセスするにはどうすればよいですか?
例:M5j80aAlmCS3Jcbh0aA3T4Tfzxv1という「Uid」を持つ特定のユーザーの「mobileno」を取得したいとします。
ユーザーのプロファイル情報を取得するには、FIRUserのインスタンスのプロパティを使用します。例:
let user = Auth.auth().currentUser
if let user = user {
// The user's ID, unique to the Firebase project.
// Do NOT use this value to authenticate with your backend server,
// if you have one. Use getTokenWithCompletion:completion: instead.
let uid = user.uid
let email = user.email
let photoURL = user.photoURL
// ...
}
詳細については、Firebase Documentationを参照してください。
それはあなたのUID(またはユーザ)の場合:
if let userUID = Auth.auth().currentUser?.uid{
%firebaseReferenceVariable%.child("Users/\(userUID)").observeSingleEvent(of: .value, with: { snapshot in
if snapshot.value is NSNull{
//handles errors
return
}
else{
if let selectedUser = snapshot.value as? NSDictionary //OR [Stirng: Any]{
let mobileno = selectedUser["mobileno"] as! String
//Do something with mobileno
}
}
})
}
あなたはfirebase参照呼び出しの任意の文字列値を持つ変数userUIDを置き換えることができ、それは、そのユーザーを取得します - 私があれば(あなたをお勧めしますあなたのアプリケーションからこれらのユーザにアクセスしようとしている)は、すべてのユーザでtableViewまたはcollectionView(何らかのタイプのリスト)を読み込みます。また、すべてのユーザーを取得して、必要なものをループすることもできます(このユーザーを表示するにはブール変数があるかどうかを考えてみましょう)。
Observe Blockを使用してチャットアプリケーションで更新されるたびにデータを取得する必要があるため、以下のコードをご覧ください。 1つのイベントを観測してデータを取得し、最後にオブザーバも削除することができます。
Database.database().reference().child("users").child(your Key value).observe(.value, with: { (snapshot) in
if snapshot.exists(){
print(snapshot)
if let snapDict = snapshot.value as? [String:AnyObject] {
//here you can get data as string , int or anyway you want
self. mobilenoLabel.text = snapDict["mobileno"] as? String
}
}
})