NSFetchedResultsController,修改NSFetchRequest?
Posted
技术标签:
【中文标题】NSFetchedResultsController,修改NSFetchRequest?【英文标题】:NSFetchedResultsController, modifying the NSFetchRequest? 【发布时间】:2012-09-03 15:12:42 【问题描述】:我已经设置了一个NSFetchRequestController
,它在其initWithFetchRequest:
参数中使用三个预计算机对象ID 作为NSPredicate
。
NSManagedObjectContext *moc = [[self managedDocument] managedObjectContext];
[self setFetchedResultsController:[[NSFetchedResultsController alloc]initWithFetchRequest:fRequest
managedObjectContext:moc
sectionNameKeyPath:nil
cacheName:nil]];
我的问题是,一旦我设置了我的NSFetchedResultsController
,当新数据在数据库中可用时,有没有办法修改控制器使用的NSFetchRequest
。我注意到请求是只读的,所以就这样了,还有其他可用的选项吗?
编辑:
我想我需要更改整个请求,但也许我可以使用现有的 NSFetchedResultsController 和现有的 NSFetchRequest 设置一个新的 NSPredicate,这样可以吗?
【问题讨论】:
据我所知,没有改变 NSFetchedResultsController 的方法。你必须创建新的控制器。 我刚刚尝试了我在 EDIT 中所暗示的内容:它似乎允许在将 performFetch 消息发送到 NSFetchedResultsController 以显示更新之前修改 NSFetchReqest 以包含新的 NSPredicate。 【参考方案1】:来自 Apple 文档: https://developer.apple.com/library/ios/documentation/CoreData/Reference/NSFetchedResultsController_Class/
修改获取请求
您不能简单地更改获取请求来修改结果。如果您想更改获取请求,您必须:
如果您正在使用缓存,请将其删除(使用 deleteCacheWithName:)。
如果要更改获取请求,通常不应使用缓存。
更改获取请求。 (修改谓词)
调用 performFetch:.
【讨论】:
以上是关于NSFetchedResultsController,修改NSFetchRequest?的主要内容,如果未能解决你的问题,请参考以下文章