2011-11-26 12 views
18

Sono un neofita della modellazione dei dati di base e ho difficoltà a capire come funzionano le relazioni uno-a-molti.CoreData - rapporto modellato uno-a-molti viene fornito come uno-a-uno

Ho un'entità padre denominata Task, che può avere diverse istanze di entità Comment. L'ho modellato in questo modo: su , una relazione con Task denominata task con l'entità Task di destinazione. Su Task, una relazione chiamata comments, con Comment come destinazione, e entrambe le relazioni sono reciprocamente inverse.

Non si definisce un risultato inverso negli avvisi o nei messaggi di errore. Mentre la modellazione funziona in questo modo, ho notato che una volta creato un secondo commento per un dato Task, il primo viene sostituito (relazione uno-a-uno).

Quale sarebbe il modo corretto di comunicare al Core Data Model che questa relazione consente molti commenti in uno Task?

Inoltre, dal momento che CoreData sembra gestire le chiavi primarie da solo, come dovrei creare un NSPredicate per recuperare tutti i commenti per una determinata attività?

Grazie per eventuali suggerimenti!

risposta

42

Prima di tutto è necessario impostare l'opzione plural nell'entità Task, selezionarlo nella vostra .xdatamodeled e selezionare la proprietà relationship di Task entità comments si dovrebbe essere in grado di vedere questo enter image description here

c'è un plural opzione assicurati di verificarlo. È necessario ricreare il proprio NSManagedObject se si utilizzano classi generate e anche se si utilizza l'archivio sqlite è necessario eliminare e ricostruire in modo che non si possa lamentare del fatto che il nuovo schema non è lo stesso di quello precedente.

Per verificare se si dispone di una relazione uno a molti, l'entità Task deve avere una proprietà denominata commenti che è un tipo di classe di NSSet non commenti.

Se si desidera recuperare tutti i commenti per una determinata attività, è necessario iterare la proprietà NSSet(comments) di tale attività.

+0

Grazie! Non sapevo nemmeno che queste opzioni fossero disponibili. Immagino di aver sempre modificato il mio modello con il riquadro destro chiuso. Al momento non sto usando classi generate oltre a testare come Core Data nomina i setter e getter (e le relazioni). – tutiplain

Problemi correlati