2012-04-10 2 views
0

現在、データソースがNSFetchedResultsControllerであるUITableViewがあります。 NSFetchedResultsControllerが行う最も重要なことは、デリゲートメソッドを使用して変更があれば自動的にテーブルを更新することです。しかし、エンティティを取得するためにフェッチを行う必要はなくなりました。現在は"Pictures"としています。私はFolderと呼ばれる別のエンティティを持ち、foldersPicturesとの関係を持っているので、folderはすべてNSSet picturesです。NSFetchedResultsControllerの代わりに?

ので、代わりの今、私はちょうどfolder.picturesを行うことができ、特定のfolderに属し、そしてそれは私が必要なものを返し、私は、配列にそれを割り当て、私のtableView源としてのことを設定することができ、すべてのpicturesをフェッチします。しかし、これは私にNSFetchedResultsControllerのような自動テーブル更新を与えるものではありません。

私の質問は、フェッチを実行せずにNSFetchedResultsController(つまり、テーブルを自動的に更新するデリゲートメソッド)の機能をどのように持つことができますか?私はに希望のNSManagedObjectsを持っているので、もうフェッチする必要はありません。

答えて

2

フェッチされた結果コントローラで何が問題になっていますか?関係のセットにもドット表記を使用するだけで、両方の世界の中で最高のものが得られます。

実際にフェッチされた結果コントローラの利点は隠されています。あなたのオブジェクト(folders)をフェッチしますが、すべての関係属性(pictures)を取得しないことがあります。これをフォールティングといいます。コアデータが必要な場合、バックグラウンドでデータを取得することを意味します。速度とメモリ使用量を自動的に最適化します。例えば、あなたのデータソースの潜在的に巨大な配列は、一度にすべてがメモリ上にある必要はなく、配列でやむを得ないものがあります。

このように、あなたは本当にFRCを取り除きたくありません。あの子はあなたの友人。彼女に忠実にしてください。 ;-)

+0

エンティティのセット全体をフェッチする方法があるのを待つのですか? – Snowman

+0

そうですね、それはあなたがそうしなければならないのとまったく同じです。あなたのテーブルビューの1つの行に対して 'folder'のインスタンスを取得したとします。通常は' folder.pictures'にアクセスできます。 – Mundi

+0

私の取得した結果のコントローラは1つのオブジェクト、フォルダ、およびテーブルビューの行数に対してはfolder.pictures.countを使用しますか? – Snowman