2012-08-27 17 views
7

Al diseñar el modelo de datos central en XCode, puede generar automáticamente las definiciones de NSManagedObject subclase (.m y .h) por¿Mejor forma de recrear la definición de clase después de modificar el modelo de datos principal?

  1. Selección de las Entidades
  2. eligiendo "Crear NSManagedObject subclases" de EDITOR menú

Después de eso, puede agregar una gran cantidad de código en estas clases, ¿qué sucede si tiene que modificar la configuración del modelo de datos por algún motivo después de eso? Para reflejar estos cambios en el modelo de datos, ¿hay alguna forma automática de hacerlo? o tienes que hacer todo manualmente

Actualmente, si trato de volver a crear esta definición de clase desde el menú EDITAR de nuevo (automáticamente), reemplazará todos los archivos actuales. Todo el código agregado desaparecerá.

Realmente espero que la futura versión de Xcode pueda agregar una función inteligente: actualizando automáticamente la definición de clase predeterminada sin perder el trabajo adicional. Tal vez soy demasiado vago. :)

Respuesta

6

Estás corriendo hacia un problema en comun. Estás muy atascado con la forma de crear subclases de objetos administrados con Xcode por el momento. Sabiendo eso, puede:

  • Diseño alrededor

    Para los casos simples, se puede utilizar categorías para agregar funcionalidad (aunque no estatal) a sus NSManagedObject subclases. El código en el archivo de la categoría está obviamente protegido contra sobreescritura cada vez que cambia su modelo de datos.

  • No usar Xcode

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

0

Puede crear una clase con un nombre diferente y pegar los campos generados en la antigua clase

1

Parece que Apple ha abordado la cuestión con XCode 7: ahora se crea automáticamente la entidad y una categoría de la entidad con sus propiedades de datos centrales. Cuando se regenera, solo actualiza la categoría, dejando intacto su código personalizado en la clase de entidad. Ver esto link

Cuestiones relacionadas