iPhone, datos básicos, predicado con el problema de “auto”
-
20-09-2019 - |
Pregunta
necesito para recargar una persona antes de NSManagedObject lo paso a la siguiente vista.
Esto es porque el fetchedResultsController que estoy usando sólo devuelve un subconjunto de atributos y necesito el conjunto completo en la siguiente vista.
Hasta el momento estoy intentando algo como:
- (void)tableView:(UITableView *)tableViewPassed didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
Person *partialPerson = (Person *)[self.fetchedResultsController objectAtIndexPath:indexPath];
NSEntityDescription *entity = [NSEntityDescription entityForName:@"Person" inManagedObjectContext:[partialPerson.managedObjectContext]];
NSFetchRequest *request = [[[NSFetchRequest alloc] init] autorelease];
[request setEntity:entity];
...
Ahora me parece que no puede conseguir el predicado de hacerlo funcionar correctamente hasta ahora he intentado:
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson];
y
NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF == %@", partialPerson.objectID];
Sin embargo, ninguno de estos parecen funcionar. ¿Qué estoy haciendo mal aquí? Es este un buen enfoque?
Gracias de antemano por cualquier sugerencia, Matt
Solución
Sólo tiene que acceder a los atributos que no están criticado y que recibirán falla automáticamente. No es necesario que vuelva a recuperar el objeto en absoluto.
Actualizar
El almacenamiento de imágenes o datos binarios en base de datos tiene algunas reglas básicas a seguir:
< 100kb store it in the same entity
< 1 mb store it in a separate entity on the other end of a relationship
> 1 mb store it on disk and reference it in the same entity
Parece que usted está guardando demasiados datos binarios de la tabla principal. Para corregir esto sigue la regla arriba y se va a resolver su problema.
Pero eso no niega mi respuesta original en que se puede instruir a la obtención para tirar en atributo1, Attribute3 y el atributo 5 y cuando necesidad para acceder Attribute3, que acaba de acceder a ella y la voluntad de Datos Básicos "hacer lo correcto" y cargarlo cuando intenta y acceder a ella. Nunca hay una razón para "recargar" el objeto en esta situación.
Otros consejos
¿Por qué usted necesita refetch partialPerson?
Basta con pasar a la siguiente vista y ya está !!! Usted puede hacer todo lo que quiera con la variable partialPerson en la siguiente vista. No veo ninguna razón por la que necesita para que vuelva a recuperar.
myViewController.myPartialPerson = partialPerson;