2011-11-26 16 views
18

Jestem nowy w modelowaniu danych podstawowych i trudno mi zrozumieć, jak działają relacje jeden-do-wielu.CoreData - modelowana relacja jeden-do-wielu wychodzi jako jeden-do-jednego

Mam jednostkę nadrzędną o nazwie Task, która może mieć kilka instancji jednostki Comment. Modelowałem to tak: na Comments, związek z Task o nazwie task z jednostką Task celem. Na Task, związek o nazwie comments, z Comment jako miejsce docelowe, a obie relacje są wzajemnie odwrotne.

Brak określenia odwrotności powoduje wyświetlenie ostrzeżeń lub komunikatów o błędach. Podczas modelowania w ten sposób działa, zauważyłem, że raz utworzyć drugi komentarz dla danego Task, pierwszy jest zastąpiony (relacja jeden-do-jednego).

Jaki byłby właściwy sposób na przekazanie Podstawowego Modelu Danych, że ten związek pozwala na wiele komentarzy w jednym Task?

Ponadto, ponieważ CoreData wydaje się samodzielnie zarządzać kluczami podstawowymi, w jaki sposób mogę utworzyć NSPredicate, aby pobrać wszystkie komentarze do danego zadania?

Dzięki za wszelkie sugestie!

Odpowiedz

42

Przede wszystkim musisz ustawić opcję w jednostce Taskplural, wybierz go w .xdatamodeled i wybierz właściwość relationship z Task podmiotu do comments powinieneś być w stanie zobaczyć to enter image description here

jest plural opcja pamiętaj, aby to sprawdzić. Musisz odtworzyć swoje NSManagedObject, jeśli korzystasz z wygenerowanych klas, a także jeśli używasz magazynu sqlite, który musisz usunąć i przebudować, aby nie narzekał na nowy schemat, który nie jest taki sam jak stary.

Aby sprawdzić, czy masz jedno do wielu relacji, twoja jednostka Task powinna mieć właściwość o nazwie komentarze, która jest typem klasy NSSet, a nie Komentarze.

Jeśli chcesz odzyskać wszystkie komentarze do danego zadania, musisz powtórzyć właściwość NSSet(comments) tego zadania.

+0

Dzięki! Nie wiedziałem nawet, że te opcje są dostępne. Wydaje mi się, że zawsze edytowałem mój model przy zamkniętym prawym okienku. Obecnie nie używam generowanych klas innych niż do testowania, w jaki sposób Core Data nazywa settery i pobierające (i relacje). – tutiplain