Подтвердить что ты не робот

IOS 10, NSUserDefaults не работает

Я пытаюсь записать/прочитать значения в /from [NSUserDefaults standardUserDefaults], но, похоже, это не сработает. Мой код:

[[NSUserDefaults standardUserDefaults] setObject:@"sampleString" forKey:@"sampleKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *defaultsValue = [[NSUserDefaults standardUserDefaults] objectForKey:@"sampleKey"];
return defaultsValue;

Этот код возвращает nil для симулятора Xcode 8.0 beta и iPhone 6s (10.0). Однако он возвращает sampleString для Xcode 8.0 beta и iPhone 6s (9.1) simulator

Я тестирую свое приложение с новыми системами. Я делаю что-то неправильно? Или есть обходной путь для этого? Или это просто "бета-версия"?

4b9b3361

Ответ 1

У меня была такая же проблема. Кажется, проблема с NSUserDefaults при первом запуске симулятора iOS8 или 9, а затем симулятора iOS10. Перезагрузка mac решила проблему для меня.

Ответ 2

Это была ошибка с iOS-симулятором, поставляемым с Xcode 8 Beta 1. В Beta 2 исправлено:

Решено в Xcode 8 beta 2 - IDE

Тренажер

  • NSUserDefaults правильно функционирует в симуляторе iOS 10, независимо от того, имеете ли вы ранее загружал iOS 8 или iOS 9 Simulator. (25974372)

Примечания к выпуску бета-версии Xcode 8

Обновить до Xcode 8 Beta 2, чтобы не перезапускать ваш компьютер Mac каждый раз.

Ответ 3

Update:

Если защита данных включена, synchronize может также не работать, когда приложение вводит фон.


У нас есть эта проблема на реальном устройстве, работающем под iOS 10.1.1. Старое значение может быть прочитано, но новые изменения не могут быть сохранены на диске, метод synchronize всегда терпит неудачу.

Перезагрузка устройства может решить эту проблему.

Ответ 4

У меня была такая же проблема. Кажется, что проблема связана с NSUserDefaults при первом запуске имитатора iOS8 или 9, а затем симулятора iOS10. Перезагрузка mac решила проблему для меня. shareeditflag Подтверждено. Закрытие и повторное открытие симулятора не сработало, но перезагрузка исправила его для меня.

Как Apple (ссылка на яблоко) WWDC Seed: запуск нескольких симуляторов iOS может привести к тому, что NSUserDefaults не будет работать. Запуск симулятора iOS 8 или 9 с помощью симулятора iOS 10 заставит NSUserDefaults перестать работать в симуляторе. Это можно обойти, перезагрузив хост Mac.