私のコード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です
誰もが私が間違ってここに何をしたかを教えてもらえますか?
あなたのケースの 'snapshot.value'は' NSDictionary 'を公開しています。 'JSON'タイプは何か分かりませんが、' FIRDataSnapshot.value'が返すタイプではありません:https://firebase.google.com/docs/reference/ios/firebasedatabase/api/reference/Classes/ FIRDataSnapshot#値 –
@FrankvanPuffelen public typealias JSON = [String:Any] – pmb
*これは常にnil *の意味ですか?監視行の直後に* print(snapshot)*行を追加すると、何が印刷されますか? – Jay