iPhone - 如何检测在NSUserDefaults standardUserDefaults中是否存在键 [英] iPhone - How to detect if a key exists in NSUserDefaults standardUserDefaults

查看:865
本文介绍了iPhone - 如何检测在NSUserDefaults standardUserDefaults中是否存在键的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

使用 NSUserDefaults * defaults = [NSUserDefaults standardUserDefaults];

c> BOOL boolFromPrefs = [defaults boolForKey:@theBoolKey]; 获取保存的BOOL值。

I use calls like BOOL boolFromPrefs = [defaults boolForKey:@"theBoolKey"]; To get a saved BOOL value.

如果未找到键,则返回NO(boolForKey的默认行为)。

但是... NO可以是已保存的设置。同样的事情为 intForKey

If the key is not found, NO is returned (default behaviour of boolForKey).
But... NO can be a saved setting. Same thing for intForKey

那么如何测试一个键是否存在, p>

So how can I test if a key exists before trying to get its value ?

推荐答案

以正确的方式和注册默认值

NSDictionary *userDefaultsDefaults = @{
    @"SomeKey": @NO,
    @"AnotherKey": @"FooBar",
    @"NumberKey": @0,
};
[NSUserDefaults.standardUserDefaults registerDefaults:userDefaultsDefaults];



< 。 application:didFinishLaunchingWithOptions:的开头是一个安全的地方。

do this before you use anything from NSUserDefaults. The beginning of application:didFinishLaunchingWithOptions: is a safe place.

您必须在每次应用启动时注册默认值。 NSUserDefaults仅存储已显式设置的值。

You have to register the defaults each time the app launches. NSUserDefaults only stores values that have been explicitly set.

如果您使用默认值,则不必对isFirstLaunch键(如其他答案中建议的)使用检查。

将帮助您在您推出更新,并且要更改 NSUserDefaults 项目的默认值。

If you use default values you don't have to use a check for a "isFirstLaunch" key, like suggested in other answers.
This will help you when you roll out an update and you want to change the default value for a NSUserDefaults item.

这篇关于iPhone - 如何检测在NSUserDefaults standardUserDefaults中是否存在键的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆