示例我在名为 FetchController 的 ListController 处调用了 NSFetchedResultsController
+(NSFetchRequest * )fetchRequestInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending;
+(NSFetchedResultsController *) searchControllerInContext: (NSString*) entityName : (NSPredicate *) predicate : (NSString*) sortKey : (BOOL) sortAscending
{
NSFetchRequest *request = [self fetchRequestInContext:entityName :predicate :sortKey :sortAscending];
NSFetchedResultsController * FRC=[[[NSFetchedResultsController alloc] initWithFetchRequest:request managedObjectContext:[ThreadClass managedObjectContext] sectionNameKeyPath:Nil cacheName:Nil]autorelease];
NSLog(@"FRC : %@",FRC);
return FRC;
}
看一下该代码,当我想制作 NSFetchedResultsController 时,我调用 searchControllerInContext ,然后使用以下代码执行它:
if (![[self ListController].FetchController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
问题是我不喜欢在请求更改时总是执行Fetch,我想让它变得简单
[self ListController].FetchController.fetchRequest=[self FunctionTogetNewRequest];
但 [self ListController].FetchController.fetchRequest 是只读的。
我想这样做是因为我不想一次又一次地执行Fetch..我可以这样做吗?
我的意思是,如果我有一个程序根据用户在搜索框中输入的内容提供记录,我是否应该在每次搜索框内容更改时创建一个新控制器?那会很奇怪。我认为使用 NSFetchedResultsController 的全部意义在于我们不必这样做?