iOS NSUserDefaults не работает, если обновить приложение с ios 9 до ios 10
У меня было приложение, работающее на iOS 9, и я создал новую сборку для iOS 10 с Xcode 8 beta 4, теперь, когда я обновляю приложение с предыдущей версии (iOS 9) до новой версии (iOS 10) в этом сценарии...
Установите предыдущую версию с Xcode 7 на iPhone (с ios 9 или 10), затем закройте приложение и установите новую версию с Xcode 8 beta 4 на том же устройстве, которое рассматривает обновление как новую установку, так что все сохраненные значения NSUserDefaults вернуть ноль!
Я протестировал пример приложения и следовал сценариям, с которыми не было проблем NSUserDefaults
в этом случае, как я использовал [NSUserDefaults standardUserDefaults]
чтобы сохранить и извлечь значения, но в следующей реализации, которая имеет проблему с использованием общего контейнера для сохранения данных, я полагаю, что "authorlementGroup" вызывает проблему!
SDK 10 может не распознать ранее созданный общий контейнер с помощью SDK 9! Есть ли мысли по этому поводу? Проблема в том, что я не могу исправить код, заменив [NSUserDefaults standardUserDefaults]
вместо использования authorlementGroup, потому что пользователи, использующие в настоящее время предыдущую версию приложения, и любые изменения в новой версии не решают проблему, поскольку ее необходимо исправить в двух версиях.
Вот основные части кода (написанные предыдущим разработчиком):
@implementation AppDelegate
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground) {
// background launch
} else {
//foreground launch
[self setupForForegroundLaunch:application option:launchOptions];
[[TrackingManager sharedTrackingManager] setIsBackground:NO];
}
}
@end
1 ответ
Я заметил, что SDK 10 не вызывает никаких проблем с NSUserDefaults.
Это был только вопрос заказа в проекте, в AppDelegate
Я звонил [[TrackingManager sharedTrackingManager] setIsBackground:NO];
до этой линии [self setupForForegroundLaunch:application option:launchOptions];
Пока я вообще инициализировал Entitlement_Group в setupForForegroundLaunch
функция и в синглтоне TrackingManager
class также Entitlement_Group запускается со значением nil, что вызвало проблему. Я только изменил порядок этих двух строк, и теперь все работает хорошо.
Подобные проблемы могут возникнуть в случае изменения файла прав. Пожалуйста, перейдите по следующим ссылкам.