Tengo una aplicación con dos lograron configuración de contextos de objetos como esto:Datos principales: ¿Los contextos secundarios alguna vez obtienen ID de objeto permanentes para objetos recién insertados?
- Contexto Padres: NSPrivateQueueConcurrencyType, vinculado al almacén persistente.
- Contexto principal: NSMainQueueConcurrencyType, hijo del contexto principal.
Al insertar un nuevo objeto logrado el contexto principal, ahorro el marco principal y luego el contexto de los padres de esta manera:
[context performBlockAndWait:^{
NSError * error = nil;
if (![context save: &error]) {
NSLog(@"Core Data save error %@, %@", error, [error userInfo]);
}
}];
[parentContext performBlock:^{
NSError *error = nil;
BOOL result = [parentContext save: &error];
if (! result) {
NSLog(@"Core Data save error in parent context %@, %@", error, [error userInfo]);
}
}];
Mi entendimiento es que cuando el objeto gestionar se crea por primera vez, se tiene un objectID
temporal. Luego se guarda el contexto principal y este objeto, con su ID temporal, llega al contexto principal. Entonces el contexto principal se guarda. Cuando se guarda este último contexto, el objectID
temporal en el contexto principal se transforma en un objectID
permanente.
Así:
- ¿Tiene el objeto de identificación permanente vez tienes propagan automáticamente a el contexto principal (niño)?
- Cuando fuerzo para obtener el objeto permanente de identificación con
[NSManagedObjectContext obtainPermanentIDsForObjects:error:]
, entonces fondo de la aplicación, reactivarlo, recargar, obtener el objeto utilizando contextual principal deobjectWithID:
, y acceso a una propiedad, consigo"CoreData podía no cumple una falla por ... ".
Jorge: Estoy recibiendo un CoreData no pudo cumplir un error al obtener una identificación permanente en un contexto secundario y guardar el ManagedObject. ¿Descubriste cuál fue el motivo? Gracias –