代码之家  ›  专栏  ›  技术社区  ›  winsmith

不支持iPhone设置

  •  1
  • winsmith  · 技术社区  · 16 年前

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

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

    <?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 回复  |  直到 16 年前
        1
  •  4
  •   Tom Irving    16 年前

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

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

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

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