动态创建NSFetchedResultsController

问题描述 投票:0回答:1

我需要能够动态创建

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

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

寻找最佳选择来处理这个问题。

一个例子是:

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

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

我最好的方法是什么?

ios rest xcode4
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);
}

这应该可以实现你想要的。

© www.soinside.com 2019 - 2024. All rights reserved.