/ / Datos principales de subprocesos múltiples - persistentStoreCoordinator vs parentContext - ios, multithreading, swift, core-data, nsmanagedobjectcontext

Datos principales multiproceso - persistentStoreCoordinator vs parentContext - ios, multihilo, swift, core-data, nsmanagedobjectcontext

Estoy tratando de resolver los problemas causados ​​por el acceso al mismo NSManagedObjectContext De múltiples hilos. Encontré lo siguiente en el Apple docs:

let moc = … //Our primary context on the main queue

let privateMOC = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
privateMOC.parentContext = moc

privateMOC.performBlock {
//...
}

Lo que parece ser lo que busco. También encontré algo muy similar en un tutorial que ha sido actualizado para iOS 9:

let privateContext = NSManagedObjectContext(concurrencyType: .PrivateQueueConcurrencyType)
privateContext.persistentStoreCoordinator = coreDataStack.context.persistentStoreCoordinator

privateContext.performBlock { () -> Void in
//...
}

Ambos parecen lograr lo mismo, sin embargo, la versión del documento de Apple utiliza parentContext en lugar de usar el persistantStoreCoordinator directamente. ¿Cuál es la diferencia entre estos dos enfoques?

Respuestas

1 para la respuesta № 1

Utilizar parentContext. Esto se prefiere al método con el coordinador de tienda persistente desde iOS 5.

Antes de OS X v10.7 y iOS v5.0, la tienda principal siempre es un coordinador de tienda persistente. En OS X v10.7 y versiones posteriores y iOS v5.0 y versiones posteriores, la tienda principal puede ser otro contexto de objeto administrado. En última instancia, la raíz de la ascendencia de un contexto debe ser un coordinador de tienda persistente. El coordinador proporciona el modelo de objetos administrados y envía solicitudes a los distintos almacenes persistentes que contienen los datos.

En su caso particular:

Si la tienda principal de un contexto es otra administradalas operaciones de contexto de objeto, recuperación y guardado están mediadas por el contexto principal en lugar de un coordinador. Este patrón tiene varios escenarios de uso, que incluyen:

  • Realización de operaciones en segundo plano en un segundo hilo o cola.

Fuente: referencia de clase NSManagedObjectContext, "Tienda para padres".