¿Cuáles son las diferencias funcionales entre el 'manual / ninguno' de Coredata CodeGen + crear la subclase 'NSManagedObject' vs. 'categoría / extensión'

He leídoSubclassing NSManagedObject con swift 3 y Xcode 8 beta y leerest gran tutorial. Todavía tengo preguntas sobre algunos puntos.

Las similitudes son: Puedo personalizar ambas clases como quiera. Puedo agregar nuevos atributos o eliminar o renombrar atributos. es decir, paracategory/extension se actualizará con una nueva compilación (en los datos derivados) y en el caso demanual/none dejará el archivo de clase intacto y actualizará la extensión en la navegación del archivo, es decir, no terminaré con un archivo duplicado. Todo esto es manejado por Xcode porque están marcados con un preprocesador@NSManaged Tirar algo como@NSManaged public var name: String? directamente a una @ existenNSManagedObject subclase no está permitido. Traté de hacerentity.name = "John" pero recibí el siguiente error:reason: '-[SomeEntity setName:]: unrecognized selector sent to instance 0x60400009b120'. Creo que eso es razonable. Creo que sin usar el Editor de modelo de datos básicos no se crean los métodos de acceso setter / getter.Las diferencias son:PorCategory/Extension solo necesita crear la clase usted mismo y agregar cualquier función / propiedad adicional que necesite.

PorCategory/Extension los atributos se crean en datos derivados que es suficiente. Porque nunca necesitas ver ese archivo. Su existencia es suficiente para que las cosas funcionen.

Y específicamente en el contexto de hacer cambios a sus propiedades de NSManaged:

Tipo de propiedad de cambio, p. @NSDate aDate está permitido solo paraManual/None. Ejemploaqu

Cambiar la opcionalidad de un tipo, p. @String? aString está permitido solo paraManual/None. Ejemploaqu

Cambiar un nivel de acceso a la propiedad, p. desdepublic aprivate está permitido solo paraManual/None. Ejemploaqu

eniendo que decir que hay una diferencia significativaS Yo elijoManual/None codegen y pero no seleccione 'crear subclase NSManagedObject'. En ese caso, comencé a escribir todo el código yo mismo (subclase de NSManagedObject y escribí NSManaged para cada propiedad) ... o si no escribo todo ese código, entonces todavía puedo acceder / configurar campos usando KVC, ¡lo cual es incómodo! @

n pocas palabras, solo estoy tratando de descubrir el alcance total de las capacidades que puedo obtener al usarManual/None.

Pregunta Aparte del 9 notas que necesito saber si he validado correctamente, una @ importanpregunt sería: ¿cómo estoy cambiandoNSDate aDate u opcional a no opcional, no rompa las asignaciones entre mi clase NSManagedObject y mi gráfico de objetos todo mientras cambio unNSDate propiedad aString se rompe !! ¿Tiene esto algo que ver con cosas que han garantizado la conversión entre Swift y Objective-C, es decir, cosas que se pueden lanzar a través deas - sin? o!?

Respuestas a la pregunta(1)

Su respuesta a la pregunta