2016-04-19 16 views
1

私はSwift iOSアプリケーションにFirebaseを使用しています。私はFirebaseのガイドで検索データのチュートリアルを少し混乱させることがわかりました。なぜ私がデータベースの既存の値にアクセスしようとしたときにゼロ値になったのかわかりません。Firebase Swiftを使用したデータの取得

これは私がこれまで持っているものである:ここでは

usersRef.queryOrderedByChild("fbid").queryEqualToValue(userId).observeSingleEventOfType(.Value, withBlock:{ snapshot in 
         print("SNAPSHOT: ",snapshot.value) 

は、印刷、スナップショットの結果です。

SNAPSHOT: { 
    1 = { 
     fbid = 1; 
     firstName = Michelle; 
     friendlist =   { 
      9 = "Kevin C"; 
     }; 
     lastName = C; 
     profilepicurl = "https:; 
     uid = "facebook:1"; 
    }; 
} 

しかし、中に結果を下の行:
致命的なエラー:オプションの値

firstName = snapshot.value.objectForKey("firstName") as! String 
私は、ユーザーのすべての値を取得したいと思います

(firstNameの、profilepicurlをアンラップしながら、予想外にnilを見つけ、友人リストなど)を変数に格納します。シンプルなようですが、おそらく私は何かを逃しています。どんな助けもありがとう。

答えて

6

FDataSnapshotには子が含まれていませんfirstName。それは子供1を含むだけです。

これは、クエリを実行してから値を要求しているためです。クエリは多くの結果を持つことができるため、結果のリストを返します。唯一つの結果があります場合でも、それは1

ソリューションのリストはまだ子供をループにされている。迅速な答えを

usersRef.queryOrderedByChild("fbid") 
     .queryEqualToValue(userId) 
     .observeSingleEventOfType(.Value, withBlock:{ snapshot in 
      for child in snapshot.children { 
       print("Loading group \(child.key!)") 
      } 
}) 
+0

おかげで、私はそれを試してみて、取り戻すつもりですあなたへ。 – Mishy

+0

解決策として回答を受け入れました。再度、感謝します! – Mishy

関連する問題