Estoy usando NSFetchedResultsController
con un predicado para cargar una lista de Documents
en mi aplicación. Quiero cargar todo el Documents
excepto el actualmente activo.Datos principales: Keypath "objectID" no encontrado en la entidad
Estoy usando Rentzsch's MOGenerator para crear una clase _Document
y luego puse todo mi código personalizado en la subclase Document
. _Document
genera una propiedad objectID
con tipo DocumentID
.
En la clase que crea el controlador, puse currentDocID
la propiedad del controlador:
controller.currentDocID = self.document.objectID;
En el propio controlador, que carga perezosa la fetchedResultsController así:
- (NSFetchedResultsController *)fetchedResultsController {
if (fetchedResultsController != nil) {
return fetchedResultsController;
}
NSFetchRequest *fetchRequest = [[NSFetchRequest alloc] init];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Document" inManagedObjectContext:managedObjectContext];
[fetchRequest setEntity:entity];
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"(objectID != %@)", self.currentDocID];
[fetchRequest setPredicate:predicate];
NSSortDescriptor *sortDescriptor = [[NSSortDescriptor alloc] initWithKey:@"dateModified" ascending:NO];
NSArray *sortDescriptors = [[NSArray alloc] initWithObjects:sortDescriptor, nil];
[fetchRequest setSortDescriptors:sortDescriptors];
NSFetchedResultsController *aFetchedResultsController = [[NSFetchedResultsController alloc] initWithFetchRequest:fetchRequest managedObjectContext:managedObjectContext sectionNameKeyPath:nil cacheName:@"Root"];
aFetchedResultsController.delegate = self;
self.fetchedResultsController = aFetchedResultsController;
[aFetchedResultsController release];
[sortDescriptor release];
[sortDescriptors release];
return fetchedResultsController;
}
cuando se carga el fetchedResultsController , mi aplicación se bloquea con una excepción no controlada:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'keypath objectID not found in entity <NSSQLEntity Document id=1>'
Tengo entendido que todos los NSManagedObjects tienen un ID de objeto, ya sea temporal o permanente. ¿No es este el caso? ¿Alguna idea?
¿Sabes por qué '... @" self! =% @ ", [Self currentDoc]]' no es lo mismo que '... @" (objectID! =% @) ", Self.currentDocID] '. Según esta publicación, http://stackoverflow.com/a/2306550/647644, debería ser equivalente. – Lindemann
@Lindemann Mejor si crea una nueva pregunta en su lugar. –