2010-06-05 28 views
5

Intenté guardar datos y fusionarme con CoreData y con múltiples hilos para la aplicación iPhone. Pero no puedo obtener objetos gestionados en el hilo principal después de la fusión.Cómo obtener objetos después de combinar el contexto CoreData

escribí código como este:

[managedObjectContext performSelectorOnMainThread:@selector(mergeChangesFromContextDidSaveNotification:) 
             withObject:notification 
            waitUntilDone:YES]; 

[self performSelectorOnMainThread:@selector(didMerged:) withObject:objectIds waitUntilDone:YES]; 

Así que trató de pasar ObjectID para obtener instancias NSManagedObject en el hilo principal que se genera en otro hilo. Primero probé el método "objectWithId" pero generó objetos de falla. Luego probé método "existingObjectWithID" pero generó objetos en parte y otros eran nulas con el siguiente error:

[Error] Error Domain=NSCocoaErrorDomain Code=133000 "Operation could not be completed. (Cocoa error 133000.)" 

Cuál es el problema? ¿Hay alguna forma de recuperar todos los objetos por objectIds después de fusionarse en otro hilo?

Gracias.

Respuesta

2

Parece que su combinación de contexto ha fallado.

developer documentation on error 133000

NSManagedObjectReferentialIntegrityError = 133000

NSManagedObjectReferentialIntegrityError Error code to denote an attempt to fire a fault pointing to an object that does not exist. The store is accessible, but the object corresponding to the fault cannot be found. Available in Mac OS X v10.4 and later. Declared in CoreDataErrors.h.

+0

Gracias por su respuesta rápida. Hmm ... En otro hilo, puedo guardar datos sin ningún error. ¿Cómo puedo unirlos al contexto en el hilo principal sin el error # 133000? – Emmettoc

0

En primer lugar, es necesario desenrollar sus errores. Cambie la salida a:

NSLog(@"Error: %@\n%@", [error localizedDescription], [error userInfo]); 

Eso le dará mucha más información.

En segundo lugar, si está trabajando con un solo contexto en varios hilos, lo está haciendo mal. Debe revisar la documentación en Core Data y enhebrar. La regla básica es: un contexto por hilo; Período. Si necesita administrar los datos en varios hilos, mire para ver las notificaciones guardadas de los hilos de fondo en el hilo principal. Sugiero que revise mis artículos en Mac Developer Network para ver ejemplos de esto.

+0

Gracias. Verificare el error en detalle. Sí, creé contextos para cada hilo. – Emmettoc

Cuestiones relacionadas