Как да мигрирам NSUserDefaults в нова версия?

Имам приложение за iPhone, което съхранява някои настройки с помощта на NSUserDefault standardUserDefaults.

Когато добавям нови функции към приложението, трябва да добавя нови настройки по подразбиране и затова трябва да мигрирам/надстроя NSUserDefaults. Засега само съхранявам номера на версията и проверявам това, когато приложението се стартира. Бързо стана много объркано, тъй като трябва да добавям много изрази if. Не мога да предположа, че потребителят просто надгражда от предишната версия, но може би дори няколко версии преди това.

Харесва ми начина, по който CoreData изглежда се справя с мигриращите промени в таблицата, но искам да осигуря съвместимост с 2.2.1 SDK и разбира се CoreData не е същото като NSUserDefaults.

Някакви предложения или най-добри практики?


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


Отговори (1)


Хм… Не бих „надстроил“ потребителските настройки по подразбиране по този начин, но вместо това заявете NSUserDefaults както обикновено, само ако стойността по подразбиране не е зададена (objectForKey ще върне нула в този случай), използвайте стойност по подразбиране (която след това може да бъде записани обратно към потребителските настройки по подразбиране, за да спестите време следващия път). Тъй като ще трябва да правите това всеки път, когато се чете "нова" настройка по подразбиране (т.е. такава, която не съществува в 1.0), съветвам ви да направите обвиващ клас/файл, който прави това, по този начин кодът се пише само веднъж за всяка "нова" по подразбиране.

Освен това, докато въпросът/проблемът е различен, този отговор работи също толкова добре във вашия случай.

person Pierre Lebeaupin    schedule 22.02.2010