Diciamo, per esempio, stavo scrivendo un'app di clone iTunes in Cocoa, che era supportata da CoreData. Per semplificazione, diciamo che ci sono due "sezioni", "Libreria" con musica, film, radio, ecc. E una seconda sezione chiamata "Playlist" che contiene playlist create dall'utente (solo elenchi stupidi, playlist non intelligenti) .Come si implementa un elenco sorgente in stile iTunes con Bindings + CoreData in Cocoa?
Quindi il SourceList stesso sarebbe in genere implementato con NSOutlineView
, che è generalmente semplice.
La sezione Libreria dell'elenco sorgente non contiene in realtà nulla generato dall'utente, solo "funzioni" dell'app (in sostanza) in cui la sezione Playlist contiene solo elenchi personalizzati creati dall'utente. Come si farebbe con Bindings e CoreData? È possibile associare la sezione Playlist ai dati dell'utente e avere un modo personalizzato di visualizzare le funzionalità della Libreria?
Mi sto ancora bagnando i piedi con Bindings e AppKit in generale, quindi per favore portami dietro. Apprezzo l'aiuto. Dovrei aggiungere, sto prendendo di mira il 10.6 e sopra.
Questo è un po 'quello che pensavo sarebbe stato necessario fare. Quindi "setUserPlaylist" sarebbe un metodo chiamato da Bindings? Sono incredibilmente annebbiato quando si tratta di come funzionano i binding (so che la loro relazione con KVC ma come sono effettivamente configurati con i controller Array/Tree ancora mi sconcerta). – jbrennan
Sì.Cocoa si prende cura di tutta la magia vincolante dietro le quinte. Tutto quello che devi fare è definire una proprietà che soddisfi KVO/KVC. Qualsiasi proprietà che tu @synthesize soddisferà quel requisito, e ogni volta che usi [self setSomePropertyName: someValue], verranno inviati i messaggi KVC appropriati. Intercettare il setter della proprietà (come mostro sopra) è perfettamente legale. Non sono sicuro di quale sia la tua origine dati per le playlist degli utenti (presumo qualcosa di CoreData), ma se la si collega al controller, il controller riceverà un messaggio "setUserPlaylists:" ogni volta che tale lista viene modificata. –