core-data nsmanagedobject swift3 xcode8

core data - Subclasificación de NSManagedObject con swift 3 y Xcode 8 beta



core-data swift3 (3)

Probablemente sea un choque (beta) con la nueva generación automática de subclases, que se puede controlar en el inspector de entidades del archivo del modelo de datos.

De la documentación (Novedades en los datos principales)

Generación automática de subclas Xcode

Xcode ahora admite la generación automática de subclases NSManagedObject en la herramienta de modelado. En el inspector de entidades:

  • Manual / None es el comportamiento predeterminado y anterior; en este caso, debe implementar su propia subclase o usar NSManagedObject .
  • La categoría / extensión genera una extensión de clase en un archivo llamado como ClassName+CoreDataGeneratedProperties . Necesitas declarar / implementar la clase principal (si en Obj-C, a través de un encabezado, la extensión puede importar Nombre de clase llamado.h). -
  • La definición de clase genera archivos de subclase nombrados como ClassName+CoreDataClass , así como los archivos generados para Category / Extension.

Los archivos generados se colocan en DerivedData y se reconstruyen en la primera construcción después de guardar el modelo. También están indexados por Xcode, por lo que funciona haciendo clic en las referencias y abrir rápidamente por nombre de archivo.

Empecé a probar el uso de datos Core con swift 3 y Xcode 8 beta. Cuando intento generar subclases NSManagedObject desde el modelo de datos básicos y la opción Crear subclase NSManagedObject ... en el menú Editor, Xcode 8 beta genera tres archivos, uno de ellos es _COREDATA_DATAMODELNAME_ + CoreDataModel.swift con el siguiente contenido:

import Foundation import CoreData ___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___

Además, el contenido de este archivo muestra dos advertencias:

Expressions are not allowed at the top level. Use of unresolved identifier ''___COREDATA_DATAMODEL_MANAGEDOBJECTCLASSES_IMPLEMENTATIONS___''

¿Alguien ha enfrentado el mismo problema? ¿Cuál es el significado de este nuevo archivo?

Gracias


Me encontré con el problema con el archivo .swift citado anteriormente y descubrí que al comentar la línea ___ COREDATA ... me daba el error por el momento. No estoy seguro de lo que se supone que debe lograr.

También descubro que XCODE 8 tiende a olvidarse de los nuevos campos que se agregan a las entidades CoreData y a restablecer repetidamente el objetivo de generación de código del modelo CoreData al Objetivo C, lo que da lugar a una ráfaga de archivos .h y .m en lugar de rápidos archivos cuando regenera archivos. La mayoría de los problemas que he visto han estado relacionados con CoreData, pero hasta ahora han sido viables.

Aparte de eso, XCODE 8 ha sido sorprendentemente sólido trabajando con una aplicación con 25 entidades de datos y más de 30 controladores de vista, así que no me quejo.


Tengo problemas similares con este desarrollador beta Xcode 8. Algunos resolvieron Command + S (guardar cambios) antes de abandonar Data Model o antes de generar sub clases NSManagedObject. No sé por qué, pero en mi caso el guardado automático no funcionaba a veces y se producen algunos errores.