2009-11-08 6 views
6

Próbuję utworzyć prosty interfejs dla mojego podstawowego modelu danych w stylu przeglądarki iTunes Genre.Implementowanie nadrzędnego-> podrzędnego drążenia w kakao z powiązaniami w rdzeniu danych, które obejmuje wiele jednostek.

Mam konfigurację modelu z trzema elementami: Genre <-->> Artist <-->> Album.

Chciałbym po prostu powiązać je z NSTableView, ale wygląda na to, że dostęp do relacji dzieci z kontrolera NSArrayController nie jest zgodny z KVC. Tak, mam trudności z przekazaniem wybranych obiektów Genre do ArtistController.

Jak to zrobić? Czy jest to możliwe w obrębie IB bez jakiejkolwiek niestandardowej podklasy?

Edytuj dla potomności: Robiłem kilka rzeczy źle.

  • Kontrolka podrzędna musi wiedzieć o managedObjectContext poprzez własne powiązanie.
  • Kontroler potomny musi nie być w trybie Entity, ale raczej działać jako klasa NSMutableDictionary.
  • I wreszcie kontroler podrzędny nie przygotowuje swoich danych. Wyszukuje go od rodzica poprzez powiązanie Content Set. Użyj klucza kontrolera selection i ścieżki klucza modelu, która łączy się z dziećmi.

Uff. Zarówno odpowiedź Briana, jak i this MacResearch tutorial były pomocne w określeniu moich błędów (i które części miałem prawo).

Odpowiedz

4

Podejście prawdopodobnie wymagałoby osobnego kontrolera NSArrayController dla każdego widoku tabeli, a następnie zawartość jednego kontrolera macierzy opiera się na wyborze innego.

Załóżmy na przykład, że masz widok tabeli A, który wyświetla listę dostępnych gatunków, więc ma kontroler macierzy A, którego zawartość jest powiązana z kontekstem obiektu zarządzanego.

Następnie powiedzmy, że masz widok tabeli B, który pokazuje dostępnych wykonawców dla dowolnego gatunku zaznaczonego w tabeli A. Ta tabela ma własny kontroler tablicy B, a tablica treści dla kontrolera B jest powiązana, więc "kontroler" "pole w IB jest ustawione na klawisz" selekcji "kontrolera A, przy czym kluczem modelu są" artyści "(to zakłada, że ​​twój obiekt Gatunek ma relację wiele do" Artystów "do artysty).

Następnie można zastosować tę samą zasadę do trzeciego widoku tabeli + kontrolera, aby wyświetlić albumy wybranego wykonawcy.

ogólny termin dla tego rodzaju instalacji jest „interfejs master-detail” i jest opisane w docs Apple na this link

+0

Tak, to jest dokładnie to, co próbowałem. Otrzymuję błąd środowiska wykonawczego: '[ valueForUndefinedKey:]: encja MBGenre nie jest zgodna z kodowaniem kluczem wartości klucza dla" artystów "." Próbowałem około sześciu lub siedmiu różnych sposobów uzyskiwania dostępu do relacji podrzędnej, z których żadna nie działa. Dzięki za wejście; to sprawia, że ​​czuję się o wiele mniej szalony. –

Powiązane problemy