Estoy trabajando en una aplicación para iPhone que utiliza Core Data. La aplicación hace una llamada a un servicio web, analiza el archivo XML resultante y luego crea o modifica los objetos de Datos principales en mi aplicación. Ya manejo la llamada al servicio web y el análisis de forma asíncrona, pero he estado devolviendo los datos analizados al hilo principal para manipular los objetos de Datos centrales. Me gustaría ejecutar este proceso en el hilo de fondo también. (A 1-2 segundos de pausa no hace para una gran experiencia de usuario)¿NSPersistentStoreCoordinator Thread Safe?
El enfoque obvio sería la creación de un contexto de objeto gestionado específicamente para el subproceso en segundo plano, pero luego leí esta línea en Apple's Core Data Programming Guide:
Un coordinador de tienda persistente proporciona a sus contextos de objetos gestionados la fachada de una tienda virtual. Para operaciones completamente simultáneas necesita un coordinador diferente para cada hilo.
Así que aquí está el truco: no puede tener dos NSPersistentStoreCoordinator
s que proporcionan acceso a la misma tienda. Pero, el libro de datos básicos de Marcus Zarra afirma que NSPersistentStoreCoordinator
es thread-safe y serializará las solicitudes de E/S (p. 157).
¿Alguien puede aclararme esto? ¿Es posible tener un segundo contexto de objeto gestionado ejecutándose en un subproceso separado compartiendo el mismo NSPersistentStoreCoordinator
con el subproceso principal? O, de manera más sucinta, ¿es NSPersistentStoreCoordinator
seguro para subprocesos?
FYI puede tener varios PSC abriendo el mismo archivo de tienda. –