您是否将字典设置为用作 "Settings.bundle/Root.plist"
?
// Register the preference defaults from file "Settings.bundle/Root.plist"
NSDictionary *dictionary = [NSDictionary dictionaryWithContentsOfFile:
[[NSBundle mainBundle] pathForResource:@"Settings.bundle/Root"
ofType:@"plist"]];
[[NSUserDefaults standardUserDefaults] registerDefaults:dictionary];
此后[NSUserDefaults standardUserDefaults]
不再为零。
在我的例子中,使用的字典[NSUserDefaults standardUserDefaults]
在调试器中看起来像这样:
{
PreferenceSpecifiers = (
{
DefaultValue = 1;
Key = sortByDistance;
Title = "Sortiere nach Entfernung";
Type = PSToggleSwitchSpecifier;
}
);
StringsTable = Root;
}
要访问首选项,我编写了一个小方法:
- (id) preferenceValueForKey: (NSString *)key {
NSArray *preferences = [[NSUserDefaults standardUserDefaults] arrayForKey:@"PreferenceSpecifiers"];
NSUInteger index = [preferences indexOfObjectPassingTest:^BOOL(id obj, NSUInteger idx, BOOL *stop) {
return [[obj valueForKey:@"Key"] isEqualToString:key];
}];
return [preferences[index] valueForKey:@"DefaultValue"];
}