【发布时间】:2011-11-07 11:16:34
【问题描述】:
我的应用启动时首先要做的事情之一是为其设置注册默认值:
// Load default defaults
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults registerDefaults:[NSDictionary dictionaryWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Defaults" ofType:@"plist"]]];
[defaults synchronize];
Defaults.plist 看起来像这样:
<key>WorkingHoursFriday</key>
<integer>28800</integer>
<key>WorkingHoursMonday</key>
<integer>28800</integer>
<key>WorkingHoursSaturday</key>
<integer>0</integer>
正确的值稍后在dumping the defaults dictionary时显示:
WorkingHoursFriday = 28800;
WorkingHoursMonday = 28800;
WorkingHoursSaturday = 0;
使用[defaults floatForKey:@"WorkingHoursSaturday"]; 等专门检索它们时也会返回正确的值。
但是,“设置”应用显示这些设置的时间错误。这是我在 Settings.bundle 中的 Root.plist 的一部分:
<dict>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Title</key>
<string>Monday</string>
<key>Key</key>
<string>WorkingHoursMonday</string>
<key>DefaultValue</key>
<integer>28800</integer>
<key>Titles</key>
<array>
<string>Free</string>
<string>8 Hours</string>
...
</array>
<key>Values</key>
<array>
<integer>0</integer>
<integer>28800</integer>
...
</array>
</dict>
<dict>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Title</key>
<string>Friday</string>
<key>Key</key>
<string>WorkingHoursFriday</string>
<key>DefaultValue</key>
<integer>28800</integer>
<key>Titles</key>
<array>
<integer>Free</integer>
<integer>8 Hours</integer>
...
</array>
</dict>
<dict>
<key>Type</key>
<string>PSMultiValueSpecifier</string>
<key>Title</key>
<string>Saturday</string>
<key>Key</key>
<string>WorkingHoursSaturday</string>
<key>DefaultValue</key>
<integer>28800</integer>
<key>Titles</key>
<array>
<string>Free</string>
<string>8 Hours</string>
...
</array>
<key>Values</key>
<array>
<integer>0</integer>
<integer>28800</integer>
...
</array>
</dict>
这是设置应用的屏幕截图。 WorkingHoursSaturday 设置为 0,但设置表仍显示 8 小时:
我错过了什么?
编辑:在代码中设置 WorkingHoursSaturday 后,通过调用 [defaults setInteger:0 forKey:@"WorkingHoursSaturday"];,Settings.app 会显示正确的值。也许对registerDefaults 的调用不正确?
【问题讨论】:
标签: ios nsuserdefaults settings.bundle