Oli*_*ver 32 iphone cocoa-touch preferences key-value nsuserdefaults
使用NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];,
我使用调用BOOL boolFromPrefs = [defaults boolForKey:@"theBoolKey"];来获取保存的BOOL值.
如果未找到密钥,则返回NO(boolForKey的默认行为).
但是...... NO可以是一个保存的设置.同样的事情intForKey
那么在尝试获取其值之前,如何测试密钥是否存在?
Mat*_*uch 63
以正确的方式执行并注册默认值.
NSDictionary *userDefaultsDefaults = @{
@"SomeKey": @NO,
@"AnotherKey": @"FooBar",
@"NumberKey": @0,
};
[NSUserDefaults.standardUserDefaults registerDefaults:userDefaultsDefaults];
Run Code Online (Sandbox Code Playgroud)
在你使用任何东西之前这样做NSUserDefaults.开始application:didFinishLaunchingWithOptions:是一个安全的地方.
每次应用启动时都必须注册默认值.NSUserDefaults仅存储已明确设置的值.
如果使用默认值,则不必使用"isFirstLaunch"键检查,如其他答案中所建议的那样.
这将在您推出更新时帮助您,并且您想要更改项目的默认值NSUserDefaults.
Mar*_*ell 30
在转换为BOOL之前检查对象是否存在.
if ([defaults objectForKey:@"theBoolKey"] != nil) {
boolFromPrefs = [defaults boolForKey:@"theBoolKey"];
} else {
boolFromPrefs = DEFAULT_BOOL_VALUE;
}
Run Code Online (Sandbox Code Playgroud)
Tim*_*tin 24
我是这样做的:
NSUserDefaults *prefs = NSUserDefaults.standardUserDefaults;
if ([[prefs dictionaryRepresentation].allKeys containsObject:@"yourKey"]) {
float yourValue = [prefs floatForKey:@"yourKey"];
}
Run Code Online (Sandbox Code Playgroud)
您可以使用测试objectForKey:,如果是n,则不设置.所有boolForKey都会NSNumber返回if if返回BOOL值.
| 归档时间: |
|
| 查看次数: |
22166 次 |
| 最近记录: |