Xcode 8 ¿Cómo usar las Clases de Gen de Código de Datos del Núcleo en Objective-C?

Estaba viendo un tutorial ( https://www.youtube.com/watch?v=qt8BNhpEAok ) para usar los datos centrales en Xcode 8 y el video estaba usando Swift. Ingresó una entidad llamada Task en el model de datos del núcleo y luego en el código pudo llamar a Tarea como:

let task = Task(context: context) 

Tengo una entidad llamada "Tag". ¿Cómo puedo acceder a Tag en el código usando objective-c? CodeGen está configurado en el model de datos del núcleo, pero no veo ningún file adicional en mi proyecto. Si trato

 Tag test = [[Tag alloc] init]; 

Aparece un error que Tag no existe.

  1. Seleccione la entidad 'Tag' en el editor de models.

  2. Genere el código fuente para la tarea seleccionando el tree de menu 'Editor' -> 'Crear subclass NSManagedObject …' y luego siga las instrucciones.

'Etiqueta + CoreDataClass.h'

'Tag + CoreDataClass.m'

'Etiqueta + CoreDataProperties.h'

'Tag + CoreDataProperties.m'

Se crearán files y se adjuntarán automáticamente a su proyecto.

  1. Importar file de encabezado.

#import "Tag+CoreDataProperties.h"

  1. Luego crea la class 'Tag'.

NSManagedObjectContext* wContext = ((AppDelegate*)UIApplication.shanetworkingApplication.delegate).persistentContainer.viewContext; Tag* w Tag = [ [ Tag alloc ] initWithContext: wContext ]; wTag.name = @"TEST";

Si Codegen está configurado en "Definición de class", puede importar el file de encabezado de subclass NSManagedObject su entidad.

Importar:

 #import "Tag+CoreDataClass.h" 

Entonces se reconocerá la creación de su object Tag .

 Tag *tag = [NSEntityDescription insertNewObjectForEntityForName:@"Tag" inManagedObjectContext:[self managedObjectContext]; tag.name = @"Tag Name"; 

Nota: Si desea ver los files que se generaron en su nombre, puede consultar la carpeta DerivedData para su proyecto. No debe editar estos files ni importarlos en su proyecto.

Algo como:

/Users/{Username}/Library/Developer/Xcode/DerivedData/{Your Project Name}/Build/Intermediates/{Your Project Name}.build/Debug-iphonesimulator/{Your Project Name}.build/DerivedSources/CoreDataGenerated/{Your Project Name}/

Hay otras opciones de Codegen que ofrecen diferentes opciones dependiendo de su caso de uso:

  • Ninguno / Manual: le permite administrar las subclasss NSManagedObject usted mismo. Con esta opción, verá los files en su proyecto y puede modificarlos.
  • Categoría / Extensión: le permite tener properties personalizadas (attributes) que no desea que Core Data administre.

Publiqué una respuesta más detallada sobre las opciones de Codegen aquí: https://stackoverflow.com/a/40647786/4748172