0

[コアデータは、NSFetchResultControllerを提供して、UITableViewを支援します。 Duration、Depart、Arrival、Price、Stopの数を昇順と降順でソートしたい。 リクエストをフェッチするためのソート・ディスクリプタを提供してデータをソートします。短絡(単一データに複数回)を実装し、Swift 3でコアデータをフィルタリングする最良の方法は何ですか?

私はちょうどそれが各ソートのためにFetchResultControllerを作成する最良の方法は知りたいですか?

enter image description here

+0

https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/FetchingObjects.htmlを読んで** NSPredicate ** –

+0

を使用する理由私は述語でデータをフェッチできますが、私はフェッチ後にデータをソートしたいので、FetchResultControllerを使用して、各ソートのリクエストを変更するか、ソートするためにフェッチされたデータの配列を作成する必要があります。どちらが一番ですか? –

+0

あなたがfatchingした後に、ソートを使ってクエリを実行してください: –

答えて

0

はい、あなたは新しいfetchedResultsControllerあなたがソートする必要があるたびに作成する必要があります。 fetchedResultsControllerは更新、削除、挿入、移動を追跡するので、フェッチした後にデータが変更された場合は、fetchedResultsControllerがビューの更新方法を教えます。フェッチして結果を整理するだけでは、データが古くなってしまう可能性があります。さらに悪いことに、オブジェクトが削除された後にオブジェクトにアクセスすると、アプリケーションがクラッシュします。 fetchedResultsControllerはこれらの問題からあなたを守ります。

大量のデータセットであっても、ユーザーがソートするたびに新しいfetchedResultsControllerを作成するのに問題はありませんでした。パフォーマンス上の問題があることがわかった場合は、事前に最適化しておかないと対処する必要があります。

+0

フェッチされたデータは一度も変更されません。並べ替えは同じデータに対して行われます。 @jon Rose –

+0

私はまだfetchedResultsControllerの使用をお勧めします。アプリは時間の経過とともに変化し、より複雑になる傾向があります。オブジェクトが削除されるたびにクラッシュするように自分自身を設定することは、私が悪い考えであると思わないときに削除されます。 –

+0

ありがとう@ジョン・ローズ –

関連する問題