Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iPhone设置不受尊重_Iphone_Nsuserdefaults - Fatal编程技术网

iPhone设置不受尊重

iPhone设置不受尊重,iphone,nsuserdefaults,Iphone,Nsuserdefaults,我的iPhone应用程序有以下问题:刚安装,当我用以下代码读取我的“播放声音”首选项时: defaults = [NSUserDefaults standardUserDefaults]; NSLog(@"Play Sounds? %d", [defaults boolForKey:@"play_sounds_preference"]); 即使默认设置设置为true,该设置的读数始终为false。有什么想法吗?这是我的Root.plist: <?xml version="1.0" enc

我的iPhone应用程序有以下问题:刚安装,当我用以下代码读取我的“播放声音”首选项时:

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>

StringsTable
根
偏好说明符
类型
PSGroupSpecifier
标题
一般设置
类型
psToggleSwitch说明符
标题
声音
钥匙
播放你喜欢的声音
默认值

当用户打开Settings.app并导航到我的应用的名称时,即使用户没有更改任何内容,设置也会显示为true。

不幸的是,默认设置仅在用户打开Settings应用时设置

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

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

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

很遗憾,默认设置仅在用户打开设置应用程序时设置

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

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

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

在另一个SO问题中有一段非常好的代码,它通过基于Root.plist初始化默认值来帮助您进行设置。这很好,因为您不必在两个地方设置默认值。请参阅:在另一个SO问题中有一段非常好的代码,它通过基于Root.plist初始化默认值来帮助实现这一点。这很好,因为您不必在两个地方设置默认值。见: