2012-04-12 3 views
1

ОК, так что я реализует классический сценарий:NSArrayController + NSTableView: автоматически сохраняет изменения без основных данных

  • A NSPopupButton с некоторыми элементами в нем
  • При изменении выбранного значения, мой itemsArray обновляется
  • itemsArray связан с NSArrayController
  • Каждый элемент в itemsArray является NSMutableDictionary (с ключами: title, content)
  • An NSTableView отображает title х годов arrangedObjects (связывание)
  • An NSTextView отображает content выбранного элемента.

Теперь, что я хочу, чтобы автоматически сохранять любые изменения в itemsArray (или itemsArray в пункте заголовок/содержание), но без использования основных данных (которые я подозреваю, возможно, был лучшим способом пойти об этом).

Я полагаю, что это довольно основной вопрос, это один, но если честно я никогда на самом деле, как авто-магический способ Какао делать вещи ... так, мне нужна ваша помощь ...

Как я должен идти об этом?

ответ

1

Вы можете записать массив в файл очень легко:

[yourArray writeToURL:someFileURL atomically:YES]; 

Это будет работать, если все содержимое массива список объектов собственности (то есть они NSNumber, NSString, NSDictionary, NSArray или NSData объекты). Это в вашем примере.

Затем вы можете воссоздать массив, используя методы arrayWithContentsOfURL: или initWithContentsOfURL: при загрузке с диска.

Если ваш объект модели более сложный, чем просто массив, то вы должны сделать ваш объект модели соответствующим протоколу NSCoding. Это означает, что вам необходимо реализовать методы initWithCoder: и encodeWithCoder:. Затем вы можете использовать классы NSKeyedArchiver и NSKeyedUnarchiver для преобразования вашего объекта в представление NSData, которое вы можете записать на диск.

Для получения более подробной информации вы должны прочитать Archives and Serialization Programming Guide.

0

Другим решением может быть добавить Shared User Defaults Controller и связать Controller Content Массив от Array Controller к Shared User Defaults Controller

 Смежные вопросы

  • Нет связанных вопросов^_^