У меня было приложение, работающее на iOS 9, и я создал новую сборку для iOS 10 с Xcode 8 beta 4, теперь, когда я обновляю приложение из предыдущей версии (iOS 9) в новую версию (iOS 10) в этом сценарии ...iOS NSUserDefaults не работает, если обновлять приложение с ios 9 до ios 10
Установите предыдущую версию с Xcode 7 на iPhone (с помощью ios 9 или 10), затем убейте приложение и установите новую версию с помощью Xcode 8 beta 4 на том же устройстве обрабатывает обновление как новую установку, поэтому все сохраненные значения NSUserDefaults возвращают нуль!
Я тестировал образец приложения и следил за сценариями, в этом случае проблем с NSUserDefaults
не было, поскольку я использовал [NSUserDefaults standardUserDefaults]
для сохранения и извлечения значений, но в следующей реализации, у которой есть проблема с использованием совместно используемого контейнера для сохранения данных. I верьте, что «entitlementGroup» вызывает проблему!
Возможно, SDK 10 не сможет распознать ранее созданный общий контейнер с помощью SDK 9! Есть ли в этом мысль? Проблема в том, что я не могу исправить код, заменив [NSUserDefaults standardUserDefaults]
вместо использования права доступа, поскольку пользователи, которые в настоящее время используют предыдущую версию приложения и любое изменение в новой версии, не исправляют проблему, поскольку она требует исправления в двух версиях.
Вот основные части кода (написанные предыдущего разработчика):
@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
У вас есть новые моделируемые устройства iOS 10 с Xcode 8, поэтому при запуске на этих устройствах, как будто приложение было только что установлено. – Paulw11
Да, истинные, но настоящие устройства имеют одинаковую проблему. Если у меня уже установлена старая версия приложения, установленного на моем телефоне с помощью ios 8 или 9, а затем, если я обновляюсь до новой версии приложения, которое разработано с помощью xcode 8, все сохраненные значения NSUserDefaults возвращают нуль. Я тестирую это: устанавливаю старую версию приложения с помощью xcode 7, а затем убиваю приложение и устанавливаю новую версию с помощью xcode 8 на iPhone. Некоторые ранее сохраненные настройки пользователя исчезли и рассматривают приложение как новую установку! Это происходит на всех устройствах ios 8-10. – Samira
Я просто создал простой тестовый проект, который устанавливает значение NSUserDefaults, если он равен нулю или печатает его, если он присутствует. Я запускал его под Xcode 7.3 на устройстве iOS 9.3.4, и он создал значение по умолчанию. Второй запуск печатал значение по умолчанию, как ожидалось. Затем я запускал проект под Xcode 8b3 и печатал значение по умолчанию, как ожидалось. – Paulw11