Wie lagern Sie Kind NSTableView Einstellungen für jedes übergeordnetes Element?
-
11-10-2019 - |
Frage
Was ist der beste Weg, um ein NSTableView
Einstellungen speichern für jedes Element in seinem übergeordneten NSTreeController
(idealerweise seine automatische Speicherung Fähigkeit nutzen)? Ich bin im Grunde separat suchen, um die Art und Weise iTunes speichert die Spalteneinstellungen für jede Wiedergabeliste zu reproduzieren.
Ich habe eine Menge von Spalten bekommt, aber, und würde nicht wollen, manuell jede einzelne Spaltengröße speichern, etc. Ich bin auch Core Data verwenden und würde eine Lösung liebe mein vorhandenes Datenmodell verwendet, um fortbestehen diese Informationen.
Aktualisieren
fand ich einige Code ( ein Category
aus Daniel Jalkut ), die es einfach zu speichern und lesen eine NSDictionary
Darstellung einer NSTableView
Spalteneinstellungen macht. Also habe ich ein binäres Attribut in meinem Core Data Einheit geschaffen, die nun die Einstellungen des für diese Entität Ansicht speichert.
Was ich möchte in der Lage sein, abrufen zu tun ist, automatisch die Einstellungen wie jede Instanz des Unternehmens ausgewählt. Ich hatte auf meinem NSTreeController
tun dies mit Schlüsselwert-Beobachtung versucht, aber es hat leider nicht geben Sie mir eine angemessene Benachrichtigung. Ich mag den Artikel wissen, ich bin Schale weg, so dass ich die Einstellungen für den vorherigen Knoten speichern, bevor sich mit dem neuen Knoten Einstellungen überschrieben werden.
Ich habe versucht, zu beobachten @"selection"
, @"selectedObjects"
und @"selectedIndexPaths"
, mit jedem options
Argumente, das ich finden konnte, und keiner von ihnen schien richtig zu arbeiten. Ich erhalte Meldungen zu den richtigen Zeiten, aber ohne nützliche Informationen im "change"
Wörterbuch, dass die Eigenschaftsänderung sendet.
Lösung
Ich entschied sich für die NSTableView + RSAutosaving Kategorie verknüpfen ich oben (mit freundlicher Genehmigung von Daniel Jalkut und Red Sweater Software), mit einigen Modifikationen auch zu speichern, ob Spalten versteckt sind. Ich speichere diese NSDictionary als binäres Datenattribut in meiner Core Data übergeordneten Entität (und ich erstellt, um eine Klein separat speichere die Sortierinformationen).
Dann habe ich meine Fenster-Controller auf zwei Mitteilungen von meinem NSOutlineView hören. Auf der @"NSOutlineViewSelectionIsChangingNotification"
Mitteilung ist der NSTreeController der Auswahl der alte Knoten. Ich speichere die NSTableView Einstellungen zu diesem Zeitpunkt. Dann wird auf der @"NSOutlineViewSelectionDidChangeNotification"
Benachrichtigung, las ich in den Einstellungen von dem neuen Knoten. Dies funktioniert wie ein Charme.