ボタンを押すと、私はFirebaseから取得している配列で特定のフィルタを実行しています。例えば、そのうちの一つは、次のとおりです。ロード時にFirebaseから配列をソートしていますか?
self.PersonalSearchesList = PersonalSearchesList.sorted{ $0.users > $1.users }
self.tableView.reloadData()
問題は、ビューが最初に私がどこで実行するかわからないapplied..butするフィルタのいずれかを希望していますロードするとき、私は望んだということですフィルタ。
配列がクエリの後に追加されているときにソートを実行すると、情報/セルがすべて誤った情報でジャックアップされます。
observer to firebaseがViewDidLoadで実行されていて、その時点で配列に値が設定されないため、viewDiDLoadで実行できません。
編集:
currentUserFirebaseReference.child("rooms").observeSingleEvent(of: .value) { (snapshot: FIRDataSnapshot) in
if let snapshots = snapshot.children.allObjects as? [FIRDataSnapshot] {
for snap in snapshots {
DataService.ds.REF_INTERESTS.child(interestKey).observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
if snapshot.value != nil {
if let users = (snapshot.value! as? NSDictionary)?["users"] as? Dictionary<String,AnyObject> {
DataService.ds.REF_USERS.child(topUser).child("pictureURL").observeSingleEvent(of: .value, with: { (snapshot: FIRDataSnapshot) in
self.PersonalSearchesList.append(eachSearch)
})
}
}
})
}
}
}
initialLoadOver = true
}
は、だから何ポイントで非同期が、この中で終わりましたか?どの行の終わりの括弧の後には何をする必要がありますか?
配列をデータに追加するfirebase closureのコードを表示します。 –
@NiravDただ編集する – user6820041