2017-05-08 19 views
0

私はSwift 3(iOS 8.3を使用)の初心者です。私はデータを分離する方法を見つけ出そうとしていましたが、運が得られませんでした。 Firebaseからのデータの読み込み/取得

{ 
Database =  { 
    Kelvin =   { 
     Institution = xxx; 
     "Years of Experience" = "2.5"; 
     location = London; 
    }; 
    Sophia =   { 
     Institution = xxxx; 
     "Years of Experience" = 3; 
     location = London; 
    }; 
}; 
Users =  { 
    SOOlIFsjn3839jcmlBbVEnSRH3 =   { 
     email = "[email protected]"; 
     password = 1234567; 
    }; 
}; 
     } 

しかし、今、私はそれがこのようなものを表示するようにデータを分けたい:基本的に、私はFirebaseから、次のデータを抽出することができる午前

 var ref: FIRDatabaseReference! 
      ref = FIRDatabase.database().reference() 
      ref.observe(FIRDataEventType.value, with: { (snapshot) in 

      if let mydata = snapshot.value as? NSDictionary { 
       print(mydata) 

       if let namedata = mydata["Database"] as? NSArray { 
        print(namedata[0]) //Prints Kelvin 
        print(namedata[1]) //Prints Sofia 

       } 

しかし、スウィフトはありませんNSDictionaryの型をNSArrayに変換できないことを私に伝えます。何か案は?非常に高く評価。

答えて

1

ファイアベースのコレクションはキーと値のペアです。 JSONの各キーについて、対応する値を見つけることができます。

したがって、NSDictionaryのString、Objectに変換する必要があります。その辞書のキーはKelvinSophiaになります。それぞれの値は、対応するキーの下の値です。

1

FIREBASEデータベースからNSDictionaryのへのREAD/RETRIVING DATA

データの読み取り、それはに存在するとして、それは

を変更するたびにあなたは、指定されたパスにデータを読み取るためにFIRDataEventTypeValueイベントを使用することができますイベントの時間。このメソッドは、リスナーがアタッチされると1回トリガーされ、子を含むデータが変更されるたびにトリガーされます。イベントコールバックには、その場所にある子データを含むすべてのデータを含むスナップショットが渡されます。データがない場合、返されるスナップショットの値はnilです。

/*FIREBASE VALUE_EVENT_LISTENER */ 
func getModelFromFirebase(){ 

    var firDatabaseReference: FIRDatabaseReference! 
    firDatabaseReference = FIRDatabase.database().reference(withPath: "referencePath") 
    firDatabaseReference.child("referenceKey").child(bookingId).observe(FIRDataEventType.value, with: { (snapshot) in 
     // Get user value 
     let value = snapshot.value as? NSDictionary 
     // Play with dict.. 

    }) { (error) in 
     print(error.localizedDescription) 
    } 

} 

読み出したデータを一度

これは一度だけロードする必要があり、頻繁に変更したり、積極的傾聴を必要とすると予想されていないデータのために有用です。たとえば、前の例のブログアプリでは、新しい投稿の作成を開始するときにこのメソッドを使用してユーザーのプロフィールを読み込みます。

/* FIREBASE SINGLE_VALUE_EVENT_LISTENER */ 
func getModelFromFirebase(){ 

    var firDatabaseReference: FIRDatabaseReference! 
    firDatabaseReference = FIRDatabase.database().reference(withPath: "referencePath") 
    firDatabaseReference.child("referenceKey").observeSingleEvent(of: .value, with: { (snapshot) in 
     // Get user value 
     let value = snapshot.value as? NSDictionary 
     // play with data Snapshot... 

    }) { (error) in 
     print(error.localizedDescription) 
    } 


} 
関連する問題