Почему мы можем ' t изменить FetchRequest в NSFetchedResultsController?

NSFetchedResultsController, вызываемый в ListController с именем FetchController

+(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;
}

, посмотрите на этот код, я вызываю searchControllerInContext, когда хочу создать NSFetchedResultsController, а затем выполняю его с помощью этого кода:

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 в том, чтобы нам не приходилось этого делать?

14
задан user4951 26 August 2011 в 06:34
поделиться