2009-11-08 5 views
6

Sto provando a creare un'interfaccia semplice per il mio modello di dati di base nello stile del browser iTunes Genre.Implementazione di parent-> child drill down in Cocoa con collegamenti Core Data che si estendono su più entità

Ho una configurazione del modello con tre entità: Genre <-->> Artist <-->> Album.

Mi piacerebbe semplicemente legarli ciascuno a un NSTableView, ma sembra che l'accesso alle relazioni dei bambini da un NSArrayController non sia conforme a KVC. Pertanto, ho difficoltà a comunicare gli oggetti Genre selezionati a ArtistController.

Come si fa? È persino possibile in IB senza sottoclassi personalizzate?

Modifica per i posteri: Stavo facendo diverse cose sbagliate.

regolatore
  • Il bambino ha bisogno di conoscere la managedObjectContext attraverso il proprio legame.
  • Il controller figlio deve non essere in modalità Entity, ma piuttosto funzionare come classe NSMutableDictionary.
  • E, infine, il controller figlio non prepara i suoi dati. Lo recupera dal genitore, tramite l'associazione Content Set. Utilizzare il tasto del controller selection e il percorso della chiave del modello che si collega ai figli.

phew. Sia la risposta di Brian che this MacResearch tutorial sono state utili nel determinare i miei errori (e quali parti avevo ragione).

risposta

4

L'approccio che proverò probabilmente è di avere un controller NSArray separato per ogni vista tabella, quindi il contenuto di un controller di array si basa sulla selezione di un altro.

Ad esempio, supponiamo di avere una vista tabella A che visualizza l'elenco dei generi disponibili, quindi ha un controller di array A il cui contenuto è collegato al contesto dell'oggetto gestito.

Quindi, si supponga di avere la vista tabella B che mostra gli artisti disponibili per qualsiasi genere selezionato nella tabella A. Questa tabella avrà il proprio controller di array B e l'array di contenuti per il controller B è associato in modo tale alla "chiave del controller "il campo in IB è impostato sul tasto" selezione "del controller A, con" artisti "come chiave del modello (ciò presuppone che l'entità del tuo genere abbia una relazione a molti chiamata" artisti "nell'entità Artista).

È quindi possibile applicare lo stesso principio a una terza vista tabella + controller per mostrare gli album per l'artista selezionato.

Il termine per questo tipo di configurazione è un "" interfaccia master-detail", ed è descritto nella documentazione di Apple a this link

+0

Sì, questo è esattamente ciò che ho provato. Ottengo l'errore di runtime: '[ valueForUndefinedKey:]: l'entità MBGenre non è un valore chiave compatibile con la codifica per la chiave" artisti ". Ho provato circa sei o sette diversi modi di accedere alla relazione figlio, nessuno dei quali funziona. Grazie per l'input; mi fa sentire molto meno pazzo. –

Problemi correlati