私はデータベースから読んでいます。個々の変数を印刷すると、正しく印刷されます。しかし、データが配列に追加することを拒否しているようです。誰でも知っている理由は?私はそれを全く理解できません。Firebaseデータベースからのデータ読み込みに関する問題
let commuteBuilder = Commutes()
Database.database().reference().child("Users").child(user).child("Trips").observe(DataEventType.childAdded, with: { (snapshot) in
//print(snapshot)
if let dict = snapshot.value as? NSDictionary {
commuteBuilder.distance = dict["Distance"] as! Double
commuteBuilder.title = dict["TripName"] as! String
commuteBuilder.transportType = (dict["Transport"] as? String)!
}
commuteArray.append(commuteBuilder)
})
print("helper")
print(commuteArray.count)
return commuteArray
これは私にはもっと意味があり、なぜこれが役立つのかが分かります。私の問題は、CoreDataを使用するように以前のコードを設定していた場合です。この場合、古いデータを呼び出して、この関数を使って配列にダンプします。さて、私はこれのためにfirebaseを使用したいと思います。私はこれを使って自動的に更新するテーブルビューを作成する方法を知っていますが、値(距離値)を追加して合計距離を出力したいユースケースもあります。 idが知っている唯一の方法は、それを配列にダンプし、合計機能を実行することです。私はそれを非同期型の関数で簡単に行うことはできないようです。 –
あなたはちょっと違うしかありません。 '.child *'イベントを待ち受けるときは、実行中の集約を保つことができます。これまでの値の合計だけです。また、 '.value'イベントのためにllistenすることもできます。これにより、すべての子ノードを一度に見ることができます。それらを繰り返して何かが変わるたびに合計を計算してください。 https://firebase.google.com/docs/database/ios/lists-of-data#listen_for_value_eventsをご覧ください。 –