2017-05-26 30 views
0

私のコードFirebaseからデータを取得できません。Firebaseデータベースからデータを取得できません

Firebaseに値を追加しているときに、そのアイテムがコンソールのFirebaseデータベースに追加されているのがわかります。

また、リスナー.childAddedを作成しました。そのアイテムがFirebase Databaseに追加されています。

私が.valueと呼んだ場合、nilという結果が得られます。

私はそこで何が起こっているのか分かりません。

ここに私のコードです。

class FirebaseManager { 

    var ref: DatabaseReference? 
    var database: DatabaseHandle? 

    static let shared: FirebaseManager = { 
     Database.database().isPersistenceEnabled = true 
     return FirebaseManager() 
    }() 

    private func initFireabase() { 
     ref = Database.database().reference(withPath: AMUtils.getUDID())   
    } 

    func addToDB(composition: Composition) { 
     initFireabase() 
     ref?.child(String(composition.id)).child("id").setValue(composition.id) 
     ref?.child(String(composition.id)).child("title").setValue(composition.title)  
    } 

    func removeFromDb(composition: Composition) { 
     ref?.child(String(composition.id)).removeValue() 
    } 

    func getCompositonFromDB(onResult: @escaping ([Composition]) -> Void){ 
     initFireabase() 
     var compositions: [Composition] = [] 
     database = ref?.observe(.value, with: { (snapshot) in 
      compositions.removeAll() 
      let value = snapshot.value as? JSON 
      compositions.append(AudioListParser.parseObject(json: value!)) 
      self.ref?.removeObserver(withHandle: self.database!) 
      onResult(compositions) 
     }) 
    } 
} 

getCompositonFromDB()を、私はビューコントローラを始めていたとき、私は呼び出していますし、これも、私は、データベース上の値を持って常にnilです

誰もが私が間違ってここに何をしたかを教えてもらえますか?

enter image description here

+0

あなたのケースの 'snapshot.value'は' NSDictionary 'を公開しています。 'JSON'タイプは何か分かりませんが、' FIRDataSnapshot.value'が返すタイプではありません:https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/ FIRDataSnapshot#値 –

+0

@FrankvanPuffelen public typealias JSON = [String:Any] – pmb

+0

*これは常にnil *の意味ですか?監視行の直後に* print(snapshot)*行を追加すると、何が印刷されますか? – Jay

答えて

0

はデータベースのルールを変更しました? あなたが認証しているかのように、書き込みと読み取りの両方にnullを設定する必要はありません。また、認証していない場合は、両方をnullにしてください。

+0

私はそれを変更します{ "規則":{ ".read":true、 ".write":true } } – pmb

関連する問題