Когда состояние приложения принадлежит Базовых Данных вместо NSUserDefaults?

От страницы Apple на" Формальные Протоколы ":

Дополнительные методы Протокола могут быть отмечены как дополнительное использование @optional ключевого слова. При соответствии @optional модальному ключевому слову существует @required ключевое слово для формального обозначения семантики поведения по умолчанию. Можно использовать @optional и @required для разделения протокола в разделы, как Вы считаете целесообразным. Если Вы не указываете ключевого слова, значение по умолчанию является @required.

@protocol MyProtocol

- (void)requiredMethod;

@optional
- (void)anOptionalMethod;
- (void)anotherOptionalMethod;

@required
- (void)anotherRequiredMethod;

@end

6
задан orque 13 August 2009 в 18:17
поделиться

3 ответа

Вы не упомянули, является ли это приложением на основе документов (например, TextEdit) или на основе библиотеки (например, AddressBook).

Это может помочь вам решить куда должна идти такая информация: предположим, приложение на основе документов. Предположим, что его документы помещены под контроль версий (это действительно возможно при использовании типа хранилища данных XML Core Data). Откройте приложение, измените порядок сортировки документа. Это загрязняет документ? Стоит ли проверять это изменение? Будет ли это изменение ценным для других пользователей этого репозитория?

Как правило, порядок сортировки недостаточно ценен, чтобы гарантировать хранение на основе документов (как, например, автосохранение имени NSTableView в Interface Builder). Но ваше приложение может отдавать приоритет сортировке (похоже на это).

Итак, нет жесткого правила.

5
ответ дан 10 December 2019 в 02:51
поделиться

Лично у меня нет жесткой разницы между сохранением настроек в самом файле или в NSUSerDefaults.

Но я всегда склонялся к очевидному:

  • Настройки приложения = NSUSerDefaults
  • Настройки документа = в самом файле

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

Если это не важно (или не применимо), я бы вообще не стал его сохранять.

2
ответ дан 10 December 2019 в 02:51
поделиться

Я согласен с rentzsch, но другой способ просмотра:

Является ли выбор частью данных или это метаданные? Если метаданные, то это метаданные об отдельном документе или это состояние, которое должно применяться к любому документу, который будет открыт следующим?

Специфические для документа метаданные могут захотеть быть сохраненными как расширенный атрибут. Например, TextMate сохраняет выбор для документа таким образом, как BBEdit, MPW и другие, используемые для хранения настроек вкладок, размера окна и т. Д. В качестве ресурса в ответвлении ресурсов. Метаданные считаются необязательными, и документ остается нетронутым, если он удален.

Если выделение является неотъемлемой частью данных, то непременно сохраните его в данных, используя Core Data, если вы так и сделаете.

2
ответ дан 10 December 2019 в 02:51
поделиться