Как перенести NSUserDefaults в новую версию?

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

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

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

Есть предложения или лучшие практики?


person Rob    schedule 22.02.2010    source источник


Ответы (1)


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

Кроме того, хотя вопрос / проблема разные, ​​этот ответ работает так же хорошо в вашем кейс.

person Pierre Lebeaupin    schedule 22.02.2010