Можно ли использовать привязки Какао, чтобы редактируемый NSTableView был подключен к NSMutableArray? - PullRequest
3 голосов
/ 04 мая 2009

Из кусочков, которые я могу собрать, кажется, что ответом будет "нет", поэтому я в общих чертах объясню, чего я пытаюсь достичь в (вероятном) случае, который я пытаюсь забить винт.

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

NSMutableDictionary *dic = [NSMutableDictionary dictionary];
[dic setObject:[NSMutableArray arrayWithObjects:@"pdf", @"rtf", @"txt", nil] forKey:@"validExtensions"];
[[NSUserDefaults standardUserDefaults] registerDefaults:dic];

и я связываю NSTableView с NSArrayController, который связан с контроллером Shared User Defaults ...

Это совершенно неправильный подход к настраиваемому пользователем списку допустимых расширений? Я неправильно понял роль NSUserDefaults?

1 Ответ

3 голосов
/ 04 мая 2009

Ответ на вопрос, поставленный в заголовке: «Да» ... но, к сожалению, это не поможет вам, потому что изменчивость структур данных в реальном резервном хранилище NSUserDefaults не контролируется изменчивостью объекты, которые вы передаете с помощью registerDefaults:.

Для значений предпочтений, которые сами являются структурами, для их изменения необходимо прочитать старую структуру, сделать изменяемую копию любой части, которую нужно изменить, изменить ее, а затем установить эту структуру в качестве нового значения. К сожалению, это плохо подходит для привязок, поэтому вам понадобится слой клея, который отражает изменения в связанном массиве в prefs.

...