0

管理対象オブジェクト コンテキスト内のクラスにバインドされた NSArrayController があります。実行時に、NSArrayController にはさまざまなフィルター述語を適用できます。特定の間隔で、適用されたフィルター述語に関係なく、NSArrayController のコンテンツを反復処理したいと考えています。

これを行うには、filterPredicate を nil に設定し、配列を反復処理した後に元に戻します。これはうまくいくようですが、それがベストプラクティスかどうか疑問に思っていますか? 代わりに、Managed Object Context を手動でポーリングする必要がありますか?

NSPredicate *predicate = nil;
predicate = [myArrayController filterPredicate];
[myArrayController setFilterPredicate:nil];
for(MyManagedObject *object in [myArrayController arrangedObjects]) {
    // ...
}
[myArrayController setFilterPredicate:predicate];
4

2 に答える 2

4

contentセレクターを使用して、適用されたフィルター述部に関係なく、配列コントローラーからすべてのコンテンツを取得できます。

[myArrayController content]

フィルタ述語をリセットする必要はまったくありません。

于 2011-06-23T15:47:52.307 に答える
0

フィルターなしですべての Foo インスタンスを取得し、それらをプログラムで反復処理することにのみ関心がある場合は、NSFetchRequestを直接使用してみませんか?

コントローラーの -arrangedObjects だけを要求している場合、フェッチ要求でソート記述子を使用するのは簡単です。

于 2010-06-03T13:38:59.783 に答える