2014-09-19 3 views
7

В Xcode 6: NSUserDefaults не работает в устройств тренажеров (iPhone 5, iPhone 6 и т.д., тренажеры).Xcode 6 NSUserDefaults не работает

Если вы протестируете на реальных устройствах, он отлично работает. Кто-то знает, как отправить эту информацию Apple? Я пытался связаться с Apple, но я не получил ответа.

Я не могу тестировать настоящий iPhone6 ​​или iPhone6 ​​Plus, потому что в моей стране еще нет.

Мой код (пример), который отлично работает на устройствах:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 

if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 

Возможно, я не выражался ясно.

Пользователь в «iPhone o iPad Settings» должен изменить параметры параметров приложения.

Настройки выполняются с помощью «Root.plist» из «Settings.bundle».

То есть, я пытаюсь проверить, что пользователь меняет параметры приложения. Но в исходном коде я не вижу этих изменений. Я всегда говорю устройства тренажеров (Xcode6)

App Settings

+0

Запуск какой версии iOS? – trojanfoe

+2

Я вижу аналогичную проблему с 'NSUserDefaults'. Я думаю, что он просто сломан в текущей версии: Version 6.0.1 (6A317). Может быть, следующий релиз исправит это? Я надеюсь, что это так. – siannopollo

+0

Моя версия симулятора v8.0 (550.1), и она работает неправильно - как описано выше. –

ответ

2

Сегодня я, наконец, исправил проблему. Я установил последнее обновление Xcode (версия 6.1), а затем я сбросил симулятор.

Затем я получил доступ к моим настройкам App. Пока вы не откроете настройки своего приложения, настройки не будут скопированы в симуляторе (или реальном устройстве).

Крайне важно как минимум один раз войти в настройки вашего приложения.

0

Попробуйте сохранить данные, как это:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
[defaults setObject:@"color0" forKey:@"theme_preference"]; 
[defaults synchronize]; 

А потом называют его позже:

NSString *appTheme = [defaults objectForKey:@"theme_preference"]; 
if ([appTheme isEqualToString:@"color0"]) { 

} else { 

} 
+0

Я пытаюсь проверить, пользователь меняет параметры приложения. Но в исходном коде я не вижу этих изменений. Я говорю всегда о тренажерах устройств (Xcode6) – Markus

+0

Неправильно. Если ваш параметр по умолчанию является целым числом (в примере), вы должны его вызвать: [defaults integerForKey: @ "strokeSize_preference"]; Это неверно: objectForKey – Markus

0

Это общая проблема теперь с xCode6 и ios8.

Что я нашел - это сбросить содержимое и настройки симулятора всякий раз, когда вы сталкиваетесь с этой проблемой NSUserDefaults.

Когда я удалил приложение из симулятора, значения userdefaults не были очищены.

Затем я сбрасываю свой симулятор, и он отлично работает для меня.

Итак, до тех пор, пока яблоко не даст исправить это, лучший способ проверить на симуляторе - сбросить симулятор всякий раз, когда вы хотите удалить приложение.

Это сработало для меня. Надеюсь, это поможет и другому.

0

Это ошибка симулятора iOS, вы должны перейти в iOS Simulator> Сбросить содержимое и настройки для сброса устройства.

+0

В моем случае: Не работает. Проблема сохраняется. – Markus

0

Перейдите в iOS-симулятор в меню и затем нажмите кнопку «Сбросить настройки содержимого», теперь ваша проблема должна быть решена.

Смежные вопросы