Ejemplo he NSFetchedResultsController llamada en ListController llama FetchController¿Por qué no podemos cambiar FetchRequest en 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;
}
vistazo a ese código, que llamo searchControllerInContext cuando quiero hacer NSFetchedResultsController y luego perfom con este código:
if (![[self ListController].FetchController performFetch:&error]) {
NSLog(@"Unresolved error %@, %@", error, [error userInfo]);
abort();
}
el problema es No me gusta realizar siempreFetch cuando la solicitud es un cambio, quiero facilitarlo con
[self ListController].FetchController.fetchRequest=[self FunctionTogetNewRequest];
pero el [auto ListController] .FetchController.fetchRequest es de solo lectura ..
Quiero hacer esto porque no quiero ejecutar PerfomFetch una y otra vez ... ¿puedo hacer eso?
Quiero decir, si tengo un programa que da registros basados en lo que el usuario pone en el cuadro de búsqueda, ¿debería crear un nuevo controlador cada vez que cambie el contenido del cuadro de búsqueda? Eso sería extraño. Pensé que el objetivo de utilizar NSFetchedResultsController es para que no tengamos que hacer eso.
¿Qué pasará si guardo en caché el resultado? ¿Debo volver a llamar a performFetch si no guardo el resultado en caché? –
Al modificar la solicitud de búsqueda, los resultados de la caché no serán válidos. Cada vez que modifique la solicitud de búsqueda, debe volver a buscar su conjunto de resultados. –
Si bien esto puede funcionar, tenga en cuenta lo que Apple escribe en su documentación: 'IMPORTANTE No debe modificar fetchRequest después de invocar este método [NSFetchedResultsController init method]. Por ejemplo, no debe cambiar su predicado o los ordenamientos. – fabb