Cómo acceder al modelo CoreData en la extensión de hoy (iOS)

¿Es posible trabajar con mi modelo CoreData en la extensión actual de forma rápida como en la aplicación original? En caso afirmativo, ¿cómo puedo crear NSManagedObjectContext?
Realmente no tengo ni idea, al lado del identificador de grupo, pero desafortunadamente no sé cómo obtener el contexto …
En el pasado, creé aplicaciones con el cheque al principio que quería usar CoreData y luego recibí el managedObjectContext a través de mi AppDelegate … Pero, ¿cómo puedo hacer algo así en una extensión? Apple no ofrece información sobre eso …

Edité esta línea en AppDelegate:

NSURL *storeURL = [[self applicationDocumentsDirectory] URLByAppendingPathComponent:@"HTWcampus.sqlite"]; 

a esto (después de incluir el grupo a ambos objectives):

 NSURL *storeURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:@"group.BenchR.TodayExtensionSharingDefaults"]; storeURL = [storeURL URLByAppendingPathComponent:@"HTWcampus.sqlite"]; NSLog(@"StoreURL2: %@", storeURL); 

Con eso la base de datos existente en mi aplicación se fue (lo que es genial, porque creo que funcionó poner la base de datos en el segmento compartido).

Pero, ¿cómo puedo crear una instancia de mi contexto en la extensión? ¿Y cómo puedo acceder a mi NSManagedObject-subclasses?

En la extensión tengo este código hasta ahora:

 var context: NSManagedObjectContext! override func viewDidLoad() { super.viewDidLoad() var storeURL = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.BenchR.TodayExtensionSharingDefaults") storeURL = storeURL?.URLByAppendingPathComponent("HTWcampus.sqlite") let modelURL = NSBundle.mainBundle().URLForResource("HTWcampus", withExtension: "momd") let model = NSManagedObjectModel(contentsOfURL: modelURL) let coordinator = NSPersistentStoreCoordinator(managedObjectModel: model) coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: storeURL, options: nil, error: nil) context = NSManagedObjectContext() context.persistentStoreCoordinator = coordinator } 

¿Es esto correcto? Y si es así, ¿cómo puedo obtener mi NSManagedObject-Subclasses allí? ¿Y tengo que agregar el archivo momd al objective de extensiones? Si es así, ¿cómo puedo hacer eso?

Lo que realmente desea es acceder a su tienda persistente (muy probablemente una base de datos SQLite). Para lograr eso, debe configurar grupos de aplicaciones y asegurarse de que su aplicación de host configure la stack de datos centrales utilizando su contenedor compartido (para que su tienda también esté accesible en extensión). Algo como:

  NSString *containerPath = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier:YOUR_SECURITY_APP_GROUP].path; NSString *sqlitePath = [NSString stringWithFormat:@"%@/%@", containerPath, @"database.sqlite"]; 

Luego, en su extensión, simplemente cree un coordinador de tienda persistente con contextos de objetos gestionados usando la base de datos en contenedor compartido. Puede compartir su modelo (.momd) y las subclases de objetos administrados con extensión simplemente asegurándose de que estén incluidos en el objective de extensión también.

Editar:

Para agregar su modelo y las subclases de objetos gestionados:

1. Asegúrate de tener tus objetivos de aplicación y extensión

  1. Asegúrate de tener tus objectives de aplicación y extensión

    2. Haga clic en su archivo de modelo y seleccione ambos objetivos en 'Membresía de destino' en el panel derecho

  2. Haga clic en su archivo de modelo y seleccione ambos objectives en ‘Membresía de destino’ en el panel derecho

    3. Repita lo mismo con todas las subclases de objetos gestionados

  3. Repita lo mismo con todas las subclases de objetos gestionados