objective-c - 如何测试 NSUserDefaults 用户设置中是否存在 BOOL?

标签 objective-c ios xcode

我在 NSUserDefaults 中设置了一个 BOOL 值,如下所示。

[userDefaults setBool:NO forKey:@"theKeyOfMyBOOL"];

在我的代码的其他地方,如果键“theKeyOfMyBOOL”没有在 NSUserDefaults 中设置,我想执行一些操作。如何验证是否设置了此 key ?如果我这样做

[userDefaults boolForKey:@"theKeyOfMyBOOL"];

那么返回的值可能是 nil,我相信它的计算结果为 false,或者是实际的 BOOL 值 NO,它的计算结果为 false。

但是,我需要区分这两个值(当然还有 YES)。我该如何可靠地做到这一点?

最佳答案

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; 返回一个 BOOL,所以 YESNO(不是 nil)。

在内部,它存储为 NSNumber。所以,如果你打电话

[userDefaults objectForKey:@"theKeyOfMyBOOL"];

如果您曾经存储过任何东西,您将得到一个NSNumber,如果您没有存储过任何东西,您将得到一个nil

关于objective-c - 如何测试 NSUserDefaults 用户设置中是否存在 BOOL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9971811/

相关文章:

objective-c - 通过 Objective-C/Cocoa 清空垃圾桶

iOS:如何从一个应用程序打开其他已安装的应用程序?

ios - NSLocationWhenInUsageDescription 提示不弹出

ios - 文件存在于 iCloud 中,但 query.resultCount = 0

ios - 核心动画速度

ios - 当文本字段为空时,如何在 Xcode UI 测试中测试 UITextField?

iphone - 关闭模态视图时在 IOS 5 中崩溃

ios 8 opengl es 1.1 停产了吗?

ios - CollectionView 约束打破

ios - 如何使用 Xcode 7 beta 编译旧的 Swift 代码?