Как вы храните дочерние настройки NSTableView для каждого родительского элемента? - PullRequest
0 голосов
/ 19 декабря 2010

Каков наилучший способ сохранить настройки NSTableView (в идеале используя возможности автосохранения) для каждого элемента в его родительском NSTreeController?В основном я пытаюсь воспроизвести способ, которым iTunes сохраняет настройки столбцов для каждого плейлиста отдельно.

У меня есть много столбцов, и я не хотел бы вручную сохранять каждый отдельный размер столбца и т. Д.Я также использую Core Data, и мне бы понравилось решение, которое использовало бы мою существующую модель данных для сохранения этой информации.

Обновление

Я нашел некоторый код ( a Category от Daniel Jalkut ), что позволяет легко хранить и читать NSDictionary представление настроек столбца NSTableView.Поэтому я создал двоичный атрибут в своей сущности Core Data, который теперь хранит настройки для представления этой сущности.

Что я хотел бы сделать, так это автоматически получать настройки, поскольку каждый экземпляр сущностивыбран.Я пытался сделать это с помощью Key-Value Observation на моем NSTreeController, но, к сожалению, оно не дает мне соответствующего уведомления.Я хотел бы знать, из какого пункта я переключаюсь, чтобы я мог сохранить настройки для предыдущего узла, прежде чем перезаписывать их настройками нового узла.

Я пытался наблюдать @"selection", @"selectedObjects"и @"selectedIndexPaths", с каждым options аргументом, который я мог найти, и ни один из них, казалось, не работал должным образом.Я получаю уведомления в нужное время, но без какой-либо полезной информации в словаре "change", которую отправляет изменение свойства.

1 Ответ

2 голосов
/ 22 декабря 2010

Я решил использовать NSTableView + RSAutosaving категорию, на которую я ссылался выше (любезно предоставлено Daniel Jalkut и Red Sweater Software), с некоторыми изменениями, чтобы также хранить скрытые столбцы.Я сохраняю этот NSDictionary в качестве атрибута двоичных данных в моей родительской сущности Core Data (и я создал еще один для отдельного хранения информации сортировки).

Затем мой оконный контроллер прослушивает два уведомления из моего NSOutlineView.В уведомлении @"NSOutlineViewSelectionIsChangingNotification" выбор NSTreeController - старый узел.Я храню настройки NSTableView в это время.Затем по уведомлению @"NSOutlineViewSelectionDidChangeNotification" читаю в настройках с нового узла.Это работает как шарм.

...