Как перенести NSUserDefaults в новую версию? - PullRequest
0 голосов
/ 22 февраля 2010

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

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

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

Любые предложения или лучшие практики?

1 Ответ

2 голосов
/ 22 февраля 2010

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

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

...