2012-04-02 60 views
9

我在NSUserDefaults中设置BOOL值如下。如何测试BOOL是否存在于NSUserDefaults用户设置中?

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

别的地方在我的代码,我想如果键“theKeyOfMyBOOL”未设置NSUserDefaults的执行一些动作。我如何验证此密钥是否已设置?如果我做

[userDefaults boolForKey:@"theKeyOfMyBOOL"]; 

,则返回的值可能是零,其计算结果为假,我相信,或NO,哪些值错误的实际BOOL值。

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

+0

可能重复的[iPhone - 如何检测是否存在一个关键NSUserDefaults standardUserDefaults](http://stackoverflow.com/questions/5397364/iphone-how-to-detect-if-a-key-exists-in -nsuserdefaults-standarduserdefaults) – 2012-04-02 07:23:52

回答

43

[userDefaults boolForKey:@"theKeyOfMyBOOL"];返回BOOL,所以要么YES要么NO(不是nil)。

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

[userDefaults objectForKey:@"theKeyOfMyBOOL"]; 

,您将获得一个NSNumber,如果你曾经存储任何东西,或nil,如果你还没有。

相关问题