¿Mejor forma de recrear la definición de class después de modificar el model de datos principales?

Al diseñar el model de datos del núcleo en XCode, puede generar automáticamente definiciones de subclass NSManagedObject (files .m y .h) por

  1. Seleccionar las Entidades
  2. Eligiendo "Crear subclasss NSManagedObject" del menu EDITOR

Después de eso, puede agregar un montón de código en estas classs, ¿qué pasa si tiene que modificar mucho la configuration del model de datos por alguna razón después de eso? Para reflejar estos cambios en el model de datos, ¿hay alguna forma automática de hacerlo? o tienes que hacer todo manualmente.

Actualmente, si bash volver a crear esta definición de class desde el menu EDITAR (automáticamente), replaceá todos los files actuales. Todo el código agregado desaparecerá.

Realmente espero que la versión futura de Xcode pueda agregar una característica inteligente: actualizar automáticamente la definición de class pnetworkingeterminada sin perder el trabajo agregado. Tal vez soy demasiado perezoso. 🙂

Te encuentras con un problema común. Estás bastante atrapado con esa forma de crear subclasss de objects gestionados con Xcode por el momento. Sabiendo eso, puedes:

  • Diseño a su alnetworkingedor

    Para casos simples, puede usar Categorías para agregar funcionalidad (aunque no estado) a sus subclasss NSManagedObject . El código en el file de la categoría está obviamente seguro de sobrescribirse cada vez que cambia su model de datos.

  • No utilices Xcode

    Mogenerator es una herramienta ingeniosa diseñada para resolver exactamente ese problema. Crea dos classs para cada entidad en lugar de una, lo que permite que Xcode administre una mientras gestiona la otra.

Parece que Apple abordó el problema con XCode 7: ahora crea automáticamente la entidad y una categoría de la entidad con sus properties de datos centrales. Cuando se regenera, solo actualiza la categoría, dejando su código personalizado en la class de entidad ileso. Ver este enlace

Puede crear una class con nombre diferente y pegar los campos generados en la class anterior.