2010-02-22 4 views
0

У меня есть приложение для iPhone, которое хранит некоторые настройки, используя NSUserDefault standardUserDefaults.Как перенести NSUserDefaults в новую версию?

Когда я добавляю новые функции в приложение, мне нужно добавить новые параметры по умолчанию, поэтому мне нужно выполнить миграцию/обновление NSUserDefaults. На данный момент я просто храню номер версии и проверяю это при запуске приложения. Это быстро стало очень грязным, поскольку я должен добавить много , если заявления. Я не могу предположить, что пользователь просто обновляется с предыдущей версии, но возможно даже пару версий.

Мне нравится, как CoreData обрабатывает переносимые изменения таблицы, но я хочу предоставить совместимость с SDK 2.2.1, и, конечно, CoreData - это не то же самое, что NSUserDefaults.

Любые предложения или рекомендации?

ответ

2

Хмм ... Я бы не «обновил» пользовательские настройки таким образом, но вместо этого запросил NSUserDefaults, как обычно, только если значение по умолчанию не установлено (objectForKey в этом случае будет возвращать нуль), используйте значение по умолчанию (который затем может быть возвращен пользователю по умолчанию, чтобы сэкономить время в следующий раз). Так как вам придется делать это каждый раз, когда читается «новое» значение по умолчанию (т.е. тот, который не существует в 1.0), я советую сделать класс/файл-оболочку, который делает это, таким образом, код записывается только один раз для каждый «новый» по умолчанию.

Кроме того, в то время как вопрос/проблема отличается, this answer работает так же хорошо в вашем случае.