Настройки iPhone не соблюдаются - PullRequest
1 голос
/ 16 мая 2010

В моем приложении для iPhone возникает следующая проблема: При новой установке, когда я считываю свои предпочтения «Воспроизвести звук» со следующим кодом:

defaults = [NSUserDefaults standardUserDefaults];
NSLog(@"Play Sounds? %d", [defaults boolForKey:@"play_sounds_preference"]);

Параметр всегда считывается как ложный, даже если по умолчаниюдля параметра установлено значение true.Есть идеи?Вот мой Root.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>StringsTable</key>
    <string>Root</string>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
            <key>Title</key>
                <string>General Settings</string>
            </dict>
            <dict>
                <key>Type</key>
                    <string>PSToggleSwitchSpecifier</string>
                    <key>Title</key>
                    <string>Sounds</string>
                    <key>Key</key>
                    <string>play_sounds_preference</string>
                    <key>DefaultValue</key>
                    <true/>
            </dict>
    </array>
</dict>
</plist>

Когда пользователь открывает файл Settings.app и переходит к имени моего приложения, ПОТОМ параметр считывается как true, даже если пользователь ничего не меняет.

1 Ответ

4 голосов
/ 16 мая 2010

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

Вы можете просто проверить, существует ли ключ при запуске приложения, и установить значение по умолчанию, если его нет:

if (![[NSUserDefaults standardUserDefaults] objectForKey:@"theKey"]){
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"theKey"];
}

Или, если у вас много ключей, которые нужно настроить, вы можете посмотреть на registerDefaults NSUserDefault.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...