0

我需要能够动态创建 NSFetchedResultsController,并且很好奇这是否可能。这样做的基础是我需要能够基于变量获取结果。据我了解,我需要多个 NSFRC 来处理多个请求(它将是一个 UISegmentControl TableView)。问题是我不知道我需要多少个控制器,因为它会根据我的 API 返回的内容而变化。

有没有更好的方法,我可以不只是将一个变量作为谓词传递给 NSFRC 吗?

寻找处理此问题的最佳选择。

一个例子是:

我有 13 种不同的作业状态(打开、暂停、取消等),获取所有作业然后运行过滤器会极大地减慢返回约 50K 记录的应用程序。

所以我的想法是获取状态'使用状态作为谓词,然后从该状态的 API 作业中获取。

我最好的方法是什么?

4

1 回答 1

0

您可以毫无问题地修改NSFetchRequestNSFetchedResultsController有关此主题的文档中有一个特殊部分。如果您使用缓存,则需要将其删除,之后您可以更改您的获取请求并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 回答