无法使用 NSUserDefaults 保存布尔变量

Posted

技术标签:

【中文标题】无法使用 NSUserDefaults 保存布尔变量【英文标题】:unable to save a bool variable using NSUserDefaults 【发布时间】:2012-02-20 15:28:36 【问题描述】:

我正在使用 XCode4.2 和开发 iPhone 应用程序

我通常使用NSUserdefaults 保存数据(主要是字符串...)

我通常写以下两行来保存数据:

historyvar=[NSUserDefaults standardUserDefaults];
[historyvar setObject:boolVar forKey:@"bool"];

我正在尝试保存一个 BOOL 变量,但执行此操作时出现红色错误:

Implicit converstion of'BOOL' (aka 'signed char') to 'id' is disallowed with ARC

我收到警告(黄色错误)

不兼容的整数到指针转换将'BOOL'(又名'signed char')发送到'id'类型的参数

对于 Bool 变量,是否有任何等效于 NSUserDefaults 的东西? 谢谢

【问题讨论】:

【参考方案1】:

NSUserDefaults 有一个 -setBool:forKey: 方法。

[[NSUserDefaults standardUserDefaults] setBool:boolValue forKey:@"bool"];

然后您将能够得到一个 实际 BOOL 值,如下所示:

BOOL saved = [[NSUserDefaults standardUserDefaults] boolForKey:@"bool"];

这样你就不必弄乱 NSNumbers 了。

【讨论】:

以上是关于无法使用 NSUserDefaults 保存布尔变量的主要内容,如果未能解决你的问题,请参考以下文章

无法保存到 iOS 7.0.2 上的 NSUserDefaults

如何将 MPMediaItemCollection 保存到 NSUSerDefaults?

如何使用 NSUserDefaults 在 iOS 中保存非属性值?

使用 NSUserDefaults 和 AVAudioPlayer 制作静音切换按钮

为啥我的 NSUserDefaults 无法加载?

复选框保存/加载NSUserdefaults