2012-03-05 9 views
11

Stiamo cercando un modo per documentare le entità dei dati di base. Finora le uniche opzioni reali che è venuta in mente sono:Documentazione degli attributi delle entità Dati dei dati con voci Informazioni utente

  1. Documento esternamente utilizzando UML o di qualche altro standard
  2. Creare sottoclassi NSManagedObject per ogni entità e usa un codice commenti
  3. utilizzare l'utente dizionario Info per creare una coppia chiave-valore che contiene una stringa di commento

Opzione 1 sente come troppo lavoro extra e qualcosa che sarà quasi certamente non essere aggiornato il 99% del tempo.

L'opzione 2 è naturale e più corretta dell'opzione 1. Il più grande problema qui è che questi commenti potrebbero potenzialmente andare persi se questa classe di modello viene rigenerata utilizzando Xcode.

L'opzione 3 si sente un po 'meno corretta rispetto all'opzione 2, ma ha il vantaggio aggiunto di aggiungere possibilità di automazione per quanto riguarda l'estrazione dei meta dati. Ad esempio, in una delle nostre app dobbiamo tenere d'occhio ciò che stiamo memorizzando localmente sul dispositivo e sincronizzare con iCloud. Utilizzando il dizionario delle informazioni utente è abbastanza semplice automatizzare la creazione di una qualche forma di artefatto che può essere controllata sia internamente che esternamente (dal cliente) per la conformità

Quindi la mia domanda è se non sarebbe opportuno usare le informazioni utente dizionario per questo scopo? E ci sono altre opzioni che mi mancano?

risposta

5

L'opzione 2 è ciò che utilizzo ogni volta. Se guardi il tuo modello di dati di base (qualcosa.xcdatamodeld o qualcosa.xcdatamodel) vedrai qualcosa come l'immagine qui sotto.

core data entity in XCode

Si può legare il vostro soggetto a qualsiasi classe che si desidera e poi mettere i commenti in là. Aiuta a mantenere il nome della tua entità uguale al nome della tua classe per rendere evidente ciò che hai fatto.

Inoltre, questo ti dà anche la possibilità di aggiungere automazione. Puoi farlo creando getter e setter personalizzati (metodi accessor) e un metodo personalizzato description.

2

Uso l'opzione 2 e le categorie. Lascerò a XCode la generazione delle sottoclassi NSManagedObject e useremo una categoria su ognuna di queste sottoclassi. Con le categorie non ho perso le mie modifiche nelle categorie, posso documentare, creare getter e setter personalizzati e sono ancora in grado di utilizzare sottoclassi generate.

+0

Accetto interamente. Non dovresti modificare manualmente il codice generato automaticamente da Xcode, perché il prossimo a lavorare sul tuo codice non saprà che lo hai fatto e cancellerà tutti i tuoi commenti quando rigenera le classi. Le categorie sono una soluzione ordinata. – Ant

1

se parliamo solo di documentare (cioè la scrittura più o meno grandi quantità di testo che è destinato ad essere letto da esseri umani) le vostre classi, mi piacerebbe utilizzare l'opzione 2.

Se siete interessati con la possibilità che Xcode sovrascriva le tue classi nell'opzione 2, potresti prendere in considerazione la creazione di due classi per ogni entità: una che è generata da Xcode e potrebbe sempre essere sostituita (generalmente non tocchi questo file) e un'altra che erediti da quella generata e in cui metti tutte le tue personalizzazioni e commenti.

Questo approccio a due classi è proposto dallo mogenerator.

Anche se è necessario memorizzare alcuni metadati con le entità che verranno elaborate a livello di codice, l'utente Info è perfettamente adatto a questo.

Problemi correlati