0

NSFetchedResultsController を動的に作成できるようにする必要があり、これが可能かどうか興味があります。これの根拠は、変数に基づいて結果をフェッチできる必要があるということです。私の理解では、複数のリクエストを処理するには複数の NSFRC が必要です (UISegmentControl TableView になります)。問題は、API が返すものに応じて変化するため、必要なコントローラーの数がわからないことです。

これにはより良い方法がありますか?変数を述語として NSFRC に渡すだけではありませんか?

これを処理するための最良のオプションを探しています。

例は次のとおりです。

ジョブには 13 の異なるステータス (Open、On Hold、Cancelled など) があり、すべてのジョブを取得してからフィルターを実行すると、アプリケーションが最大 50K レコードを返すのが非常に遅くなります。

だから私は、ステータスをフェッチして、ステータスを述語として使用し、そのステータスのAPIジョブからフェッチすることでした。

私の最善のアプローチは何ですか?

4

1 に答える 1

0

NSFetchRequestのを問題なく変更できNSFetchedResultsControllerます。ドキュメントには、このトピックに関する特別なセクションがあります。キャッシュを使用している場合は、キャッシュを削除する必要があります。その後、フェッチ要求を変更performFetch:して、NSFetchedResultsController. トリックは、新しいフェッチ要求を設定しようとするのではなく、コントローラーの既存のものを変更することNSFetchRequestです。これは機能しません。

あなたの場合、呼び出してフェッチリクエストの述語を設定したいかもしれません-[NSFetchRequest setPredicate:]

[NSFetchedResultsController deleteCacheWithName:cacheName];
[self.controller.fetchRequest setPredicate:[NSPredicate predicateWithFormat:@"status == %@", currentStatus]];
NSError* error = nil;
if (![self.controller performFetch:&error]) {
    NSLog(@"Error updating fetch: %@", error);
}

これはあなたが望むことをするはずです。

于 2013-07-30T15:01:48.320 に答える