读取 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 布尔值的主要内容,如果未能解决你的问题,请参考以下文章

为啥不建议使用NSUserDefault存储大量数据

NSUserDefault 更新公式

如何为 NSUserDefault Keys 设置初始值?

如何在其他视图控制器中获取 nsuserdefault 值

从 H2 数据库中读取 TINYINT 值作为布尔值/布尔值时出现 MappingException

从数据库中读取布尔值?