cocoa core-data nsmanagedobjectcontext

cocoa - NSManagedObjectContext(): `init()` ha quedado obsoleto en iOS 9.0: use-initWithConcurrencyType



core-data (2)

En esencia, siempre tendrá al menos 1 contexto con NSMainQueueConcurrencyType y muchos contextos con NSPrivateQueueConcurrencyType . NSPrivateQueueConcurrencyType se usa normalmente para guardar o traer cosas a los datos centrales en segundo plano (como si se tratara de sincronizar registros con un servicio web).

El NSMainQueueConcurrencyType crea un contexto asociado a la cola principal que es perfecto para usar con NSFetchedResultsController .

La pila de datos básicos predeterminada utiliza un único contexto con NSMainQueueConcurrencyType , pero puede crear una aplicación mucho mejor aprovechando múltiples NSPrivateQueueConcurrencyType para realizar cualquier trabajo que no afecte a la UI.

Estaba trabajando en Core Data Stack en Swift - Demystified pero cuando llegué a la línea

self.context = NSManagedObjectContext()

Recibí la advertencia

`init()` was deprecated in iOS 9.0: Use -initWithConcurrencyType: instead

Veo que puedo hacer uno de los siguientes para self.context =

NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.ConfinementConcurrencyType) NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.MainQueueConcurrencyType) NSManagedObjectContext(concurrencyType: NSManagedObjectContextConcurrencyType.PrivateQueueConcurrencyType)

pero dado que ConfinementConcurrencyType también está en desuso ahora eso me deja MainQueueConcurrencyType y PrivateQueueConcurrencyType . ¿Cuál es la diferencia entre estos dos y cómo debo elegir cuál usar? Leí esta documentación , pero realmente no entendí.


Reemplace estas dos funciones con la siguiente:

lazy var managedObjectContext: NSManagedObjectContext = { // Returns the managed object context for the application (which is already bound to the persistent store coordinator for the application.) This property is optional since there are legitimate error conditions that could cause the creation of the context to fail. let coordinator = self.persistentStoreCoordinator var managedObjectContext = NSManagedObjectContext(concurrencyType: .MainQueueConcurrencyType) managedObjectContext.persistentStoreCoordinator = coordinator return managedObjectContext }() // MARK: - Core Data Saving support func saveContext () { if managedObjectContext.hasChanges { do { try managedObjectContext.save() } catch { // Replace this implementation with code to handle the error appropriately. // abort() causes the application to generate a crash log and terminate. You should not use this function in a shipping application, although it may be useful during development. let nserror = error as NSError NSLog("Unresolved error /(nserror), /(nserror.userInfo)") abort() } } }