2011-12-22 9 views
5

Sto lottando con la progettazione di un modello coreData in cui ho un solo tipo di voce chiamata "Da fare". Ogni voce To-Do ha 0, 1, 2, ... o n relazioni con altre (sotto) voci proprio come To-Do. Quindi le relazioni tra le voci To-Do progettano una struttura ad albero con un numero indefinito di nodi figli. Il grafico seguente dovrebbe illustrare il caso (E = inserimento dei dati di base):Dati principali: come progettare una struttura dati ad albero da una voce di dati centrale

  E        
      /|\       
     /| \      
     E E E      
     /\    
    / \   
     E  E    
    /|\     
    E E E   

La mia ipotesi era di modellare i dati, come illustrato nel grafico seguente. Non ho scelto la relazione inversa perché Xcode ha creato una relazione molti-a-molti che non corrisponde alla struttura ad albero.

enter image description here

Inoltre ho visto nel data model inspector qualcosa chiamato "elemento padre". Così ho iniziato a credere che avrei potuto creare una seconda voce denominata "To-Do-Child" con gli stessi attributi e rendere l'altra voce alla voce genitore. Il manuale mi dice che questo potrebbe essere la strada sbagliata da percorrere ...

Domande:

  1. Come posso modellare questo approccio all'interno del file core modello di dati? Uno di quelli menzionati è corretto?

  2. Come sarà possibile recuperare tutte le voci Da fare di un nodo genitore specificato? Poiché derivano dalla stessa voce, ho problemi ad affrontare la sottostruttura To-Do esatta che voglio.

+0

Basta collegare a questa domanda che è un po 'più utile della risposta accettata http://stackoverflow.com/questions/16633907/model-a-tree-structure-in-core-data –

risposta

3

Penso che è necessario un rapporto di parent (dell'entità di destinazione è vostro per fare l'entità) che serve come destinazione per la relazione inversa.

Le voci nella parte superiore dell'albero hanno valore nullo per questa relazione.

Per qualsiasi elemento da fare, il set restituito dalla relazione childToDos terrà tutti i figli. Non importa che siano della stessa classe.

+0

Aha, bella idea. Ma poi mi è venuto in mente perché non definire una seconda relazione chiamata 'parent'. Non farebbe il trucco anche senza avere un nuovo attributo? Quindi il primo approccio con la relazione di sé sarebbe l'approccio giusto? –

+0

Corretto, questo è quello che intendevo, mi dispiace. Ho aggiornato la risposta. – jrturton

Problemi correlati