В одном приложении, над которым я работаю, мне нужно разрешить пользователю редактировать список дат. У меня есть NSDate
объекты в массиве, и я связал это с NSArrayController
. Я связал NSTableColumn
(единственный столбец в табличном представлении) с этим контроллером массива, используя путь ключа arrangedObjects.self
. Это прекрасно работает - я получаю все даты, отображаемые в таблице, так, как я хочу, и я могу добавлять и удалять даты.
Беда в том, что я не могу редактировать даты в таблице. Если я пытаюсь получить исключение, сообщающее мне, что NSDate
не соответствует кодировке ключ-значение ключу self
, что, конечно, верно, метода setSelf:
не существует.
У меня есть две идеи, как мне это решить:
- мой массив не должен хранить
NSDate
напрямую, но сначала поместите его в NSMutableDictionary
или какой-либо другой объект.
- не позволяет пользователю редактировать дату напрямую, но заставит его удалить неправильную и повторно добавить исправленную дату.
Мне не очень нравятся оба решения. Мне не нравится первое, потому что я должен поместить вещи в свою модель, чтобы получить правильный графический интерфейс. И второе не очень удобно для пользователя.
Так у кого-нибудь есть идея, если есть третий и даже лучший способ решить эту проблему?
Обновление: временное решение
Пока я использую источник данных табличного представления для решения этой проблемы вместо использования привязок. Но я все еще хотел бы посмотреть, есть ли лучшее решение, использующее привязки для этой проблемы, поскольку я действительно не хочу записывать источник данных каждый раз, когда возникает эта (или похожая проблема). Это происходит не только с NSDate
, но и со всеми другими классами типов значений, предоставляемыми какао, даже если они изменчивы (например, NSMutableString
).