2

我已经设置了一个NSFetchRequestController使用三个预计算机 objectID 作为NSPredicateinitWithFetchRequest:参数的。

NSManagedObjectContext *moc = [[self managedDocument] managedObjectContext];
[self setFetchedResultsController:[[NSFetchedResultsController alloc]initWithFetchRequest:fRequest
                                                                     managedObjectContext:moc
                                                                       sectionNameKeyPath:nil
                                                                                cacheName:nil]];

我的问题是,一旦我设置了我的,当新数据在数据库中可用时,NSFetchedResultsController有没有办法修改控制器使用的。NSFetchRequest我注意到该请求是只读的,所以就这样了,我还有其他选择吗?

编辑:

我在想我需要更改整个请求,但也许我可以使用现有的 NSFetchedResultsController 和现有的 NSFetchRequest 设置一个新的 NSPredicate,这样可以吗?

4

1 回答 1

1

来自 Apple 文档: https ://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/

修改获取请求

您不能简单地更改获取请求来修改结果。如果要更改获取请求,则必须:

如果您正在使用缓存,请将其删除(使用 deleteCacheWithName:)。

如果要更改获取请求,通常不应使用缓存。

更改获取请求。(修改谓词)

调用 performFetch:。

于 2015-02-19T17:27:16.520 回答