NSUserDefaults boolforKey设计限制?

NP *_*ete 18 iphone api cocoa foundation ios

NSUserDefaultsAPI文档具有boolForKey:被这样描述消息-

boolForKey:
Run Code Online (Sandbox Code Playgroud)

返回与指定键关联的布尔值.

- (BOOL)boolForKey:(NSString *)defaultName
Run Code Online (Sandbox Code Playgroud)

返回值如果布尔值与用户默认值中的defaultName相关联,则返回该值.否则,返回NO.

假设a [[NSUserDefaults standardUserDefaults] boolForKey:@"some_Key"]返回NO,则可能是因为密钥不存在或密钥存在且boolean值为NO.我们如何区分?截至目前,我只能避免首先陷入这种情况.

Ole*_*ann 32

您错误地使用了用户默认值.在您的应用程序启动时,您应该-[NSUserDefaults registerDefaults:]使用包含所有首选项的默认值的字典进行调用.

然后,如果用户尚未设置首选项,-boolForKey则将返回默认值.

  • 我不会走得那么远,并说他错误地使用了用户默认值.注册默认值是可选的,在他的情况下可能更方便,但Mike Abdullah的回答恰好更合适. (4认同)

Mik*_*lah 29

也可以使用该-objectForKey:方法.这将告诉您密钥是否存在.

  • 是`BOOL`不是对象,但是`NSUserDefaults`将它们作为`NSNumber`实例处理,这是你从`-objectForKey获得的:` (20认同)