Angenommen, ich habe zur Veranschaulichung eine iTunes-Klon-App in Cocoa geschrieben, die von CoreData unterstützt wurde. Zur Vereinfachung, nehmen wir an, es gibt zwei "Abschnitte", "Bibliothek" mit Dingen wie Musik, Filme, Radio, etc. Und ein zweiter Abschnitt namens "Playlisten", die benutzergenerierte Wiedergabelisten enthält (nur dumme Listen, keine intelligenten Wiedergabelisten) .Wie würde eine Sourcen-Liste im iTunes-Stil mit Bindings + CoreData in Cocoa implementiert?
So würde die SourceList selbst typischerweise mit NSOutlineView
implementiert werden, das ist in der Regel unkompliziert.
Der Bibliotheksbereich der Quellenliste enthält nicht wirklich alles, was vom Benutzer generiert wird, sondern nur "Funktionen" der App (im Wesentlichen), wo der Abschnitt "Playlisten" nur benutzerdefinierte Listen enthält, die vom Benutzer erstellt wurden. Wie würde man das mit Bindings und CoreData machen? Ist es möglich, den Bereich "Playlists" nur an die Daten des Nutzers zu binden und die Bibliotheksfunktionen benutzerdefiniert anzuzeigen?
Ich bin immer noch nass mit Bindings und AppKit im Allgemeinen, also bitte bitte mit mir. Ich schätze die Hilfe. Ich füge hinzu, ich ziele auf 10.6 und höher.
Das ist etwas, was ich dachte, dass getan werden müsste. Also wäre 'setUserPlaylists' eine von Bindings aufgerufene Methode? Ich bin unglaublich neblig, wenn es darum geht, wie Bindungen funktionieren (ich kenne ihre Beziehung zu KVC, aber wie sie tatsächlich mit Array/Tree Controllern konfiguriert sind, verwirrt mich immer noch). – jbrennan
Ja.Cocoa kümmert sich um die verbindliche Magie hinter den Kulissen. Alles, was Sie tun müssen, ist eine Eigenschaft zu definieren, die KVO/KVC erfüllt. Jede Eigenschaft, die Sie @synthesize verwenden, wird diese Anforderung erfüllen, und jedes Mal, wenn Sie [self setSomePropertyName: someValue] verwenden, werden die entsprechenden KVC-Nachrichten gesendet. Abfangen des Property Setter (wie ich oben zeige) ist völlig legal. Ich bin mir nicht sicher, was Ihre Datenquelle für die Benutzer-Playlists ist (etwas von CoreData, vermute ich), aber wenn Sie es an Ihren Controller binden, erhält der Controller eine "setUserPlaylists:" Nachricht, wenn diese Liste geändert wird. –