La networkingeclaración no válida en el código automático genera la subclass NSManagedObject Swift 3

Usando la versión 8.1 de Xcode.

Cree una entidad llamada "MapRegionObject" en el file .xcdatamodeld. introduzca la descripción de la imagen aquí

Utilizando el generador de códigos automático, click Editor en la barra de navigation -> crear subclass NSManagedOject …

Tengo dos files: MapRegionObject + CoreDataClass.swift y MapRegionObject + CoreDataProperties

Errores en dos files que se muestran en la captura de pantalla: MapRegionObject + CoreDataClass.swift introduzca la descripción de la imagen aquí

MapRegionObject + CoreDataProperties introduzca la descripción de la imagen aquí

¡Por favor, ayúdame a solucionar estos errores, muchas gracias!

En Xcode 8.1, antes de usar el generador de códigos automático, select la entidad en su model de datos:

Entidad

Luego ve a la pestaña Inspector del Modelo de Datos:

Inspector de modelos de datos

En "Codegen" select "Manual / Nodo"

Después de eso, podrías crear una subclass NSManagedObject sin errores.

De forma alternativa, si ya ha utilizado 'Definición de class', puede ingresar en su file existente .xcdatamodeld y establecer todas las entidades actuales en 'Manual / Ninguno' en Codegen. Asegúrese de save su proyecto (Archivo -> Guardar) , elimine sus datos derivados existentes, limpie el proyecto y luego compile. Lo resolví para mí sin tener que volver a hacer todo mi model.

Encontré todo esto muy confuso. Realmente necesitas entender qué hay de nuevo en CoreData. Básicamente, el valor pnetworkingeterminado es generar automáticamente la class y las extensiones para usted en un lugar llamado "DerivedData" que está enterrado en ~ / Library / Developer / Xcode / DerivedData donde estas classs y sus extensiones viven, fuera de su fuente de código. Personalmente, no poder abrirlos y mirarlos es extraño para mí, pero algo para usarlo.

Básicamente, si tiene una entidad llamada "AppSettings" en su model CoreData, puede usarla sin necesidad de generar el código usted mismo. Si desea el código en su proyecto, establezca la propiedad Codegen en la entidad en Manual / Ninguno. Luego haz lo que hiciste antes: Editor-> Crear classs NSManagedObject, etc. Los files terminarán en tu proyecto.

La buena noticia es que si quieres hacer extensiones personalizadas, simplemente haz eso en tu proyecto. Xcode combinará los files generados, desde su otro lugar fuera del directory de su proyecto, con los files del directory de su proyecto.

1) limpiar el proyecto (cmd + shift + K)

2) En el "inspector del model de datos" para cada atributo creado de la Entidad creada para la Clase tal como se muestra en la siguiente captura de pantalla

captura de pantalla

3) Generar código nuevamente (Editor -> crear subclasss NSManagedObject)

Después de eso todo debería funcionar bien.

Cierre el proyecto y siga las siguientes instrucciones:

  1. Revele en su buscador el file .xcdatamodeld de la database.
  2. en el file .xcdatamodeld, haga clic derecho -> Mostrar contenido del package, si (.xcdatamodel) se vuelve a encontrar en el package nuevamente, haga clic derecho y 'Mostrar contenido del package'. debe get el file 'contenido'.
  3. Abre 'contenidos' en la edición de text.
  4. Command-F (codeGenerationType = "class") y reemplaza todas las cadenas de coincidencias con una cadena en blanco.

Guarde y abra el proyecto Xcode de nuevo. Todo debería funcionar bien.

El problema es que ya no es necesario generar manualmente subclasss NSManagedObjectModel. ref: https://forums.developer.apple.com/thread/48988

Xcode genera automáticamente classs o extensiones de class para las entidades y properties en un model de datos Core Data. La generación automática de códigos está habilitada y deshabilitada en una entidad por base de entidad, y está habilitada para todas las entidades en nuevos models usando el formatting de file Xcode 8. Esta function está disponible para cualquier model de datos que se haya actualizado al formatting Xcode 8. Usted especifica si Xcode genera el código Swift u Objective-C para un model de datos utilizando el inspector de files del model de datos. Cuando la generación automática de códigos está habilitada para una entidad, Xcode crea una class o extensión de class para la entidad como se especifica en el inspector de la entidad: se utiliza el nombre de class especificado y las fonts se colocan en los datos derivados del proyecto. Tanto para Swift como para Objective-C, estas classs se pueden usar directamente desde el código del proyecto. Para Objective-C, se crea un file de encabezado adicional para todas las entidades generadas en su model: el nombre de file se ajusta a la convención de nomenclatura 'DataModelName + CoreDataModel.h'.

En Xcode 8.2.1, Menu-Product-Clean, y todo está bien, es tan verídico.

Encontré esta publicación muy útil para mi pregunta.

Novedades de Core Data Swift 3.0

Cómo usar datos básicos en iOS 10 (Swift 3)

No luches con Xcode en esto a less que realmente necesites modificar tus properties generadas, hacerlo te dejará frustrado.

Piense en la class generada automáticamente como cualquier otra class en su aplicación. Si necesita agregar funcionalidad a su class de object gestionado, simplemente cambie su definición de class a una extensión y extienda su object.

cambia tu class:

 class MyManagedObject : NSManagedObject { /* implementation*/ } 

a una extensión:

 extension MyManagedObject { /* implementation */ }