iPhone设置不受尊重
我的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
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初始化默认值来帮助实现这一点。这很好,因为您不必在两个地方设置默认值。见: