2013-03-23 2 views
4

Я только что начал с RubyMotion, и, насколько я могу судить, он предлагает использовать NSUserDefaults для хранилища данных. Мне это кажется странным, поскольку название предполагает, что оно должно использоваться только для хранения конфигурационных переменных и т. Д., А не для объектов.Есть ли что-нибудь, что я не должен был сохранять в NSUserDefaults

Можно ли хранить мои объекты (такие как Пользователь, Компания, Задачи и т. Д.) В NSUserDefaults или использовать другой подход?

ответ

6

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

Адрес an answer with suggestions on how to choose among the storage models for your app.

0

Смотрите принципы на https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/UserDefaults/AboutPreferenceDomains/AboutPreferenceDomains.html

Вопрос не имеет ничего общего с RubyMotion и все, что с Cocoa Touch.

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

Это не подходящее место для хранения других вещей, таких как ваши объекты.

3

NSUserDefaults следует использовать для сохранения пользовательских настроек для приложений. Это не общее хранение данных. The NSUserDefaults class reference указывается:

Система по умолчанию позволяет приложению настраивать свое поведение в соответствии с предпочтениями пользователя. Например, вы можете разрешить пользователям определять, какие единицы измерения отображаются в вашем приложении или как часто документы автоматически сохраняются.

Так что если ваше приложение управляет пользователями, компаниями и задачами, то для этого не используйте NSUserDefaults.

1

NSUserDefaults класса предоставляет удобные методы для доступа к общим типам, такие как floats, doubles, integers, Booleans и URLs.

объект по умолчанию должен быть список свойств, то есть экземпляр (или для коллекций комбинации экземпляров): NSData, NSString, NSNumber, NSDate, NSArray или NSDictionary.

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

Для получения более подробной информации см NSUserDefaults Class Reference