iPhone и NSUserDefaults - PullRequest
       49

iPhone и NSUserDefaults

2 голосов
/ 10 октября 2009

В моем viewWillLoad: методе я в настоящее время делаю что-то вроде этого:

- (void)viewWillAppear:(BOOL)animated {
   NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
   if ( [defaults boolForKey:@"enabled_preference"] ) {
      ...   
   } else {
      ...   
   }
   [super viewWillAppear:animated];
}

Если я создаю и запускаю приложение перед открытием панели настроек (созданной с использованием обычного Settings.bundle ), тогда значение bool будет NO (или, скорее, ноль ), а не по умолчанию ДА . Однако, если я открою приложение «Настройки» и посмотрю на панель настроек приложения, прежде чем открыть приложение, все будет работать, как и ожидалось.

Я предполагаю, что настройки приложения не инициализированы, и я должен инициализировать их значением по умолчанию (если оно еще не установлено) в делегате приложения. Кто-нибудь может это подтвердить? Или я здесь упускаю что-то ослепительно очевидное?

Ответы [ 2 ]

4 голосов
/ 10 октября 2009

Вы должны указать значения по умолчанию в своем коде, используя -registerDefaults:. Обычно это делается методом +initialize для любого класса, использующего настройки. См. Использование NSUserDefaults .

3 голосов
/ 10 октября 2009

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

...