Firebaseを使用しているアプリケーションで作業しています。私が達成しようとしているのは、Firebaseからデータを取得し、そのデータをソートし、最後にそのデータをtableViewにロードすることです。データの取得、データのソート、テーブルビューへのロード(Swift 3:Firebase)
私は私の全体のコードつもりシェアないんだけど、ここで私はそれが仕事をしたいか、本質的です:
var posts = [PostStruct]()
var following = [String]()
...
let databaseRef = FIRDatabase.database().reference()
for follower in following {
databaseRef.child("Posts").child(follower).observe(.value, with: {
DataSnapshot in
//Parse All The Data...
self.posts.insert(...)
}
}
self.posts.sort{$0.date.compare($1.date) == .orderedDescending}
print("Test")
self.tableView.reloadData()
print("Test")
呼び出されますが、それが呼び出されますFIRDatabaseが要求される前に、並べ替え時にtableViewには全くデータがないことがわかります。ですから、データベースのリクエストが完了したら、ソートする方法を見つける必要があります。
for文にsortとreloadメソッドを置くことができますが、それはうまく動作しますが、すべてが不安定になり、効率的ではありません。
ありがとう!私は実際にその考えを念頭に置いていましたが、ちょうどそれを適切に考えていませんでした。助けてくれてありがとう!あなたは命の恩人です。 :) –
大歓迎です。私はそれらの瞬間も持っていました。喜んで助けてください。私は@Pentarexの提案もコールバック関数について好きです。長期的には、このソリューションはもう少しエレガントに見えると思います。 – Donny
ええ、私もそれを念頭に置いておきます。 :) –