1
関数の補完を処理する最善の方法を見つけようとしています。firebaseが終了したときに関数に補完を追加する、iOS、Swift
この関数はfirebaseからのデータを呼び出して辞書の配列に追加します。これはマップ用であり注釈を追加するため、ループは最後に追加されたバージョンに来る前に大量のデータを追加しているため、アノテーションの投げ込み負荷が同じ場所に集中します。私はループが終了したときに補完を呼び出すことができますし、関数ShowSightings()を呼び出すことができるかどうかを知りたいです。
func getDatafromFB() {
DataService.ds.REF_POSTS.child("postCodes").observeSingleEvent(of: .value, with: { (snapshot) in
let value = snapshot.value as? NSDictionary
let postsIds = value?.allKeys as! [String]
for postId in postsIds {
let refToPost = Database.database().reference(withPath: "posts/" + "postCodes/" + postId)
refToPost.observe(.value, with: { snapshot in
if snapshot.exists() {
let postDict = snapshot.value as? [String: AnyObject]
print("Tony: before append post \(self.posts)")
self.posts.append(postDict!)
print("Tony: post \(self.posts)")
}else {
print("Tony: Couldn't get the data")
}
})
}
print("Tony: The compleetion result \(self.posts)")
})
}
ありがとうございますこの@ j.Doe、ImはFirebaseから辞書の配列を作成しようとしています。 post [[string:Any]]()のように設定されている投稿にそれらを修正している瞬間、postsIDの各postIDが投稿に費やしています。 arrPostIdsに何を追加しますか?それはポストですか? –
これをうなずき、編集して自分のコードに適用することができました –