2012-03-05 12 views
11

Estamos buscando una forma de documentar entidades de datos centrales. Hasta ahora, las únicas opciones reales que he llegado con son:Documentación de atributos de entidad de datos principales con entradas de información de usuario

  1. Documento externamente usando UML o alguna otra norma
  2. Crear subclases NSManagedObject para cada entidad y utilizar el código comenta
  3. Uso del diccionario del usuario a la información crear un par de valores clave que sostiene un comentario cadena

Opción 1 siente como demasiado trabajo extra y algo que es casi seguro que estar fuera de fecha el 99% de las veces.

La opción 2 se siente natural y es más correcta que la opción 1. El mayor inconveniente aquí es que esos comentarios podrían perderse si esta clase de modelo se regenera con Xcode.

La opción 3 se siente un poco menos correcta que la opción 2, pero tiene la ventaja adicional de agregar posibilidades de automatización con respecto a la extracción de metadatos. Por ejemplo, en una de nuestras aplicaciones, necesitamos estar muy atentos a lo que almacenamos localmente en el dispositivo, así como a la sincronización con iCloud. Usando el diccionario de información del usuario es muy fácil automatizar la creación de algún tipo de artefacto que pueda verificarse tanto interna como externamente (por el cliente) para el cumplimiento

Entonces mi pregunta es si sería inapropiado usar la información del usuario diccionario para este propósito? ¿Y hay alguna otra opción que me falta?

Respuesta

5

La opción 2 es lo que uso siempre. Si observas tu modelo de datos básicos (algo.xcdatamodeld o algo.xcdatamodel) verás algo como la imagen de abajo.

core data entity in XCode

Usted puede atar su entidad a cualquier clase que desea y luego poner los comentarios en ese país. Ayuda si mantiene el nombre de su entidad igual al nombre de su clase para que sea obvio lo que ha hecho.

Además, esto también le brinda la posibilidad de agregar automatización. Puede hacerlo creando getters y setters personalizados (métodos de acceso) y un método personalizado description.

2

Uso la opción 2 y categorías. Dejaré que XCode genere las subclases NSManagedObject y usaré una categoría en cada una de estas subclases. Con las categorías no pierdo mis cambios realizados en las categorías, puedo documentar, crear getter y setters personalizados y aún puedo usar las subclases generadas.

+0

Totalmente de acuerdo. No debes alterar manualmente el código generado automáticamente por Xcode, porque el siguiente tipo que trabaje en tu código no sabrá que lo has hecho y borrará todos tus comentarios cuando vuelva a generar las clases. Las categorías son una buena solución. – Ant

1

Si hablamos sólo de documentar (es decir, escribir más o menos grandes cantidades de texto que está destinado a ser leído por los seres humanos) sus clases, que haría uso de la opción 2.

Si usted se refiere a la posibilidad de que Xcode sobrescriba sus clases en la opción 2, puede considerar crear dos clases para cada entidad: una generada por Xcode y siempre puede ser reemplazada (generalmente no toca este archivo) y otra que hereda de la generada y en el que pone todas sus personalizaciones y comentarios.

Este enfoque de dos clases está propuesto por el mogenerator.

Aunque si necesita almacenar algunos metadatos con las entidades que se procesarán mediante programación, userInfo es perfectamente adecuado para esto.

Cuestiones relacionadas