Строковое значение в Settings.bundle пусто после обновления - PullRequest
0 голосов
/ 01 октября 2009

В целях обеспечения качества я показываю версию сборки нашего приложения в представлении настроек приложения в виде PSTitleValueSpecifier. Я устанавливаю текущий номер сборки нашего приложения как DefaultValue и обновляю его для каждой новой сборки.

Моя проблема в том, что всякий раз, когда я развертываю новую сборку нашего приложения на телефоне разработчика через XCode, значение версии не обновляется, а остается в предыдущей сборке. Единственный способ обновить значение версии - удалить приложение из телефона разработчика и развернуть новую сборку. Очевидно, что этот подход не радует наш отдел контроля качества, поскольку они теряют все свои постоянные данные.

Я пытался очистить проект, перекомпилировать и развернуть, но у меня такое же поведение.

Кто-нибудь еще сталкивался с этой проблемой? Любая идея о том, как обойти это / исправить это?

1 Ответ

2 голосов
/ 01 октября 2009

Это потому, что это значение хранится с использованием NSUserDefaults, которое хранится на диске и удаляется только при удалении приложения. Вы можете явно установить его в коде так же, как и любой другой пользователь по умолчанию. Вы можете просто создать поле в вашем Info.plist, которое вы изменяете, когда хотите отправить новую сборку. Считайте это значение из списка при запуске, а затем запишите его по умолчанию для вашего пользователя:

NSString *value = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"build_version"];
[[NSUserDefaults standardDefaults] setObject:value forKey@"build_version"];
[[NSUserDefaults standardDefaults] synchronize];

Конечно, вы заменяете "build_version" на то, какое имя вашего ключа указано в вашем файле настроек. Это взлом, но он может удовлетворить ваших QA людей.

Ради аргумента, на самом деле разумно ожидать, что вы должны полностью удалить предыдущую версию, прежде чем увидите обновление номера версии, однако я понимаю, что не все люди, отвечающие за обеспечение качества, являются разумными. ; -)

...