读取 NSUserDefault 布尔值
Posted
技术标签:
【中文标题】读取 NSUserDefault 布尔值【英文标题】:Reading NSUserDefault bool 【发布时间】:2011-10-19 15:30:28 【问题描述】:我在尝试将布尔值注册为 NSUserDefault 时遇到问题。然后我希望以后能够读取这个布尔值。问题是,当我读取该值时,它没有将其作为YES
拾取。
这是我用来注册值的代码:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
NSMutableDictionary *appDefaults = [NSMutableDictionary dictionary];
[appDefaults setValue:@"YES" forKey:kShowHelp];
[defaults registerDefaults:appDefaults];
[defaults synchronize];
然后我使用以下代码读取布尔值:
bool showHelp = [[NSUserDefaults standardUserDefaults] boolForKey:kShowHelp];
【问题讨论】:
【参考方案1】:不要使用 setValue:forKey: 使用 setObject:forKey:
[appDefaults setObject:[NSNumber numberWithBool:YES] forKey:kShowHelp];
【讨论】:
因为我无法将值添加到字典(以及其他)中,所以它只为我提供了setValue:
和setObject:
的选项
你应该使用 setObject: -- 见上文
当我阅读 bool 时,我需要做些不同的事情吗?由于某种原因,我似乎仍然没有拿起它。
@JonW09 你是把它改成 NSNumber 还是你还在用 setObject 写一个字符串?
我现在使用的正是您在回答中提供的内容,但我仍然以与我的问题相同的方式阅读它。【参考方案2】:
你为什么不使用setBool:forKey
?
[ appDefaults setBool: YES forKey: kShowHelp ];
编辑
好的,既然你有字典,你应该使用 NSNumber 来表示布尔值。
示例
NSUserDefaults * defaults = [ NSUserDefaults standardUserDefaults ];
NSMutableDictionary * appDefaults = [ NSMutableDictionary dictionary ];
[ appDefaults setObject: [ NSNumber numberWithBool: YES ] forKey: kShowHelp ];
[ defaults registerDefaults: appDefaults ];
[ defaults synchronize ];
编辑 2
您知道您还可以在应用程序的包中创建一个 plist,并将其值注册为默认值吗?更简单的恕我直言。
【讨论】:
因为我无法将值添加到字典(以及其他)中,所以它只为我提供了setValue:
和setObject:
的选项
他的 appDefaults 是他用来注册默认值的字典,所以它没有 setBool:forKey: 方法。
对字典使用 NSValue 或 NSNumber。以上是关于读取 NSUserDefault 布尔值的主要内容,如果未能解决你的问题,请参考以下文章