2011-12-29 3 views
4

Существует множество ответов, связанных с использованием регистрации пользовательских значений по умолчанию, и я выглядел тяжело, и я все еще в шоке от поведения, которое я вижу.registerDefaults не отражается в настройках app

В моем наборе настроек у меня есть один тумблер, который я даю идентификатору 'sharing', давая ему значение по умолчанию YES. Я вижу этот переключатель в приложении настроек, но по умолчанию он не включен. Даже если я удалю приложение с телефона и установлю снова.

В моем методе didfinishlaunchingwithoptions у меня есть следующие:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"YES" forKey:@"sharing"]; 
[defaults registerDefaults:appDefaults]; 

[defaults synchronize]; 

Если я тест, чтобы увидеть:

NSLog(@"%d",[defaults boolForKey:@"sharing"]); 

по умолчанию установлен, но это не отражается в приложении настройки.

Если я затем перейти в приложение настройки и флип переключатель включения и проверки значения:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL enabled = [defaults boolForKey:@"sharing"]; 

Это будет по-прежнему приводить к YES, который я хотел бы ожидать.

И тогда я переверните его выключен и тест снова:

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 
BOOL enabled = [defaults boolForKey:@"sharing"]; 

Это будет НЕТ, как ожидается, и соединение теперь работает нормально.

Итак, в основном все работает нормально, за исключением того, что перед изменением настройки по умолчанию существует программно, но не отображается визуально в приложении настроек.

Надеюсь, кто-то может указать, что мне не хватает!

Благодаря

ответ

3

Проблема заключалась в том, что я имел «значение для ON» и «Значение для Off» установлен тип String, а не логическое значение в моей settings.bundle (Root.plist).

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

Этот урок помог мне найти мою ошибку:

http://useyourloaf.com/blog/2010/5/18/adding-a-settings-bundle-to-an-iphone-app.html

+0

Analog to Matt, у меня было значение по умолчанию, чтобы ввести String вместо Boolean в моем наборе параметров. Там же проблема. – Bjinse

2

Использование [NSUserDefaults standardUserDefaults] setBool: forKey:] вместо [[NSUserDefaults standardUserDefaults] setObject: forKey:] помогла мне упростить отливку.

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