Ответ 1
Хотя вы установили DefaultValue для каждого элемента в параметре Setting.bundle, он не будет записан на вас NSUserDefaults, поэтому, когда вы извлекаете из NSUserDefaults, он возвращает нуль (в данном случае "0" или NO, без разницы).
Выполните следующие действия, чтобы настроить свои настройки в NSUserDefaults при первом запуске.
Сначала вы проверите, уже ли вы проверили и установили значения по умолчанию:
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
if ([userDefaults boolForKey:@"PreferenceFirstSetup"]) {
//return if you already done the job once.
return;
}
И если нет, задайте значения по умолчанию...
[userDefaults setBool:YES forKey:@"PreferenceFirstSetup"];
NSString *settingsPath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"Settings.bundle"];
NSString *rootPath = [settingsPath stringByAppendingPathComponent:@"Root.plist"];
NSDictionary *settingsDictionary = [NSDictionary dictionaryWithContentsOfFile:rootPath];
NSArray *preferencesArray = [settingsDictionary objectForKey:@"PreferenceSpecifiers"];
for (NSDictionary *item in preferencesArray) {
NSString *key = [item objectForKey:@"Key"];
id defaultValue = [item objectForKey:@"DefaultValue"];
if (key && defaultValue)
[userDefaults setObject:defaultValue forKey:key];
}
//Save on disk
[userDefaults synchronize];
Теперь вы должны иметь доступ к значениям по умолчанию. Надеюсь, это поможет!