iPhone设置不值得尊敬

时间:2010-05-16 12:20:28

标签: iphone nsuserdefaults

我的iPhone应用程序存在以下问题:新安装时,当我使用以下代码读出“Play Sound”首选项时:

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

即使默认设置设置为true,设置也始终显示为false。有任何想法吗?这是我的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 个答案:

答案 0 :(得分:4)

默认情况下,默认设置仅在用户打开设置应用时设置。

您可以在启动应用时检查密钥是否存在,如果不是则设置默认值:

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

或者,如果你有很多需要设置的键,你可以查看NSUserDefault的registerDefaults。