risposta

1

Ha a che fare con la codifica del valore chiave. È possibile associare un controllo in IB a un valore nel controller. Per connettere quel valore, devi specificare il keypath ad esso. Ad esempio, se hai un campo di testo in IB e vuoi legarlo per dire un campo chiamato 'nome' nel tuo controller, devi specificare 'nome' come il keypath. È quindi necessario impostare il campo del nome nel controller per essere accessibile tramite la codifica del valore chiave. Questo è fatto in 10.5 usando gli specificatori @property e @synthesize.

4

Il menu a comparsa della chiave del controller consente di scoprire quali tasti presenta il controller (in genere un controller NSArray, NSObjectController o NSTreeController).

L'esempio migliore è la chiave di selection NSArrayControllers, che contiene l'insieme di oggetti selezionati. Ciò che confonde è che NSObjectController presenta anche una chiave di 'selezione', sebbene il controllore possa controllare solo un singolo oggetto (quindi la selezione = l'oggetto).

Sono d'accordo che non è chiaro a tutti. Ho iniziato a comprenderlo personalmente quando ho associato i miei oggetti a livello di codice (ad esempio utilizzando il metodo bind:toObject:withKeyPath:options:).

4

[Copia my answer on another question ...]

La chiave di controllo è la chiave per la (proprietà dell'oggetto regolatore) si sta legame. Il percorso chiave del modello è il percorso chiave mediante il quale l'oggetto associato può chiedere agli oggetti del modello ulteriori oggetti di base, come stringhe o immagini o altri oggetti del modello (ad esempio, drill down nel modello).

Un esempio: Diciamo che avere oggetti una persona in un controller di array, e ogni persona ha un name. Si associa una colonna di tabella al controller di array, la chiave del controller arrangedObjects (ottenendo così gli oggetti del modello), il percorso della chiave del modello name (ottenendo così gli oggetti valore).

Un esempio più complesso: Supponiamo di avere un controller di array di dipartimenti. Ogni dipartimento contiene persone (dipendenti nel dipartimento). È possibile associare il controller persone array per il controller Dipartimenti, regolatore chiave di arrangedObjects (ottenere oggetti del modello Department), modello di percorso della chiave @distinctUnionOfObjects.employees (ottenere oggetti del modello persona), e quindi associare una colonna della tabella al controller persone, regolatore chiave di arrangedObjects, percorso chiave modello name.

Quel tavolo sarebbe per le persone che lavorano per la vostra azienda; se si dispone di una tabella separata di potenziali dipendenti, è possibile creare oggetti Person anche per loro e non verranno visualizzati nella tabella dei dipendenti esistenti perché non si trovano in un reparto. Quando li assumi, li aggiungi a uno o più dipartimenti; quindi, verranno visualizzati automaticamente nel controller di array People, poiché il controller di array sta osservando lo employees di tutti i reparti.

+0

Dave Gallagher: In realtà no. Entrambi gli esempi sono di una singola tabella, elencando oggetti Person. L'ex esempio ha questi come il livello più alto del modello; l'ultimo esempio ha tutte le persone accessibili solo attraverso i dipartimenti.I due esempi mostrano che la stessa lista singola può essere facilmente implementata per entrambi i modelli usando Bindings. –