Cocoa: привязка к массиву NSString, которые хранятся в настройках приложения.

ОК, я чувствую себя ОЧЕНЬ глупо, задавая этот вопрос, но мне удалось поставить себя в тупик так сильно, что я сомневаюсь, что у меня есть надлежащая отстраненность, чтобы найти ответ для себя. Мои извинения заранее...

Я уже некоторое время играю с креплениями и ЛЮБЛЮ их. Это и соглашения KVO/KVC, встроенные в Objective-C 2.0, позволили мне значительно уменьшить размер моих приложений, повысив при этом их надежность, гибкость и т. д. Я говорю это только для того, чтобы проиллюстрировать, что я, по крайней мере, умеренно комфортно работаю с привязками. в целом. При этом моя проблема заключается в следующем:

У меня есть приложение, в котором я хотел бы сохранить редактируемый набор ключевых слов с помощью контроллера настроек. Легко, верно? К сожалению, для жизни я не могу понять, как это сделать. Я устанавливаю контроллер массива и указываю ему на объект общих настроек и даю ему ключевой путь для массива. Проблема в том, что объекты, хранящиеся в массиве, являются NSStrings, и я не понимаю, как NSStrings могут быть совместимы с KVC для такого рода операций из-за отсутствия каких-либо методов "stringValue/setStringValue". Без них, какой ключевой путь я использую в NSTableView, который я настроил, чтобы облегчить манипулирование этим списком?

Кроме того, поскольку объект общих настроек не принадлежит мне, я не уверен, как настроить новый массив для представления неотредактированного/недавно установленного состояния. (Регистрация их по умолчанию, похоже, не работает для меня.)

Итак, чтобы более кратко повторить мои вопросы: как вы можете связать табличное представление с массивом NSString и как вы можете сохранить указанный массив в настройках приложения?

Любые указатели или советы, которые вы можете предложить, будут ОЧЕНЬ высоко оценены. Головные боли, которые я получаю от этого, начинают меня одолевать. :)


person Chronor    schedule 29.07.2009    source источник


Ответы (2)


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

Предполагая, что ваше приложение — это не просто редактор списка строк, у вас, вероятно, есть другие вещи, которые вы можете переместить в этот класс модели. Вы должны сделать это.

person Peter Hosey    schedule 30.07.2009
comment
К такому выводу я все время приходил, но почему-то не мог заставить себя поверить в это. Спасибо тебе за пояснение. Что касается помещения его в настройки приложений, я предполагаю, что это следует сделать с помощью преобразователя значений, который будет преобразовывать его в/из NSData? Кроме того, как лучше всего заполнить начальные значения для этого массива? Еще раз спасибо за информацию... - person Chronor; 30.07.2009
comment
Обычно вы привязываете представления или другие контроллеры к пользовательским значениям по умолчанию с помощью NSUserDefaultsController. Этот класс также имеет методы для работы с начальными значениями. - person Peter Hosey; 30.07.2009
comment
Спасибо, Питер. Это было очень полезно. Я делал то же самое - привязывал NSArray NSSTrings к ComboBox, и мне было интересно, каким может быть ключевой путь. Теперь я поместил все свои строки в новый класс, и он отлично работает. - person TalkingCode; 26.10.2009

Я знаю, что этот вопрос довольно старый, но у меня была похожая проблема, и я попал на эту страницу. Я хотел внести свой вклад в решение. Мне нужен не большой список строк. На самом деле табличное представление выглядело очень уродливо для моих нужд. Затем я вспомнил другой элемент управления, NSTokenField. Он привязывается к массиву строк из коробки и выглядит еще лучше для небольшого списка коротких строк :)

person cocoafan    schedule 25.12.2013