registerDefaults方法设置默认值而不是实际值。

时间:2014-05-02 12:17:25

标签: ios objective-c nsuserdefaults

我想了解

的功能
[NSUserDefaults standardUserDefaults] registerDefaults:];

registerDefaults方法是设置默认值而不是实际值。例如,假设我按顺序执行以下语句,

[[NSUserDefaults standardUserDefaults] setObject:@"1" ForKey:@"test"];  

然后致电,

[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObjectsAndKeys:@"2",@"test", nil]];  

我看到valueForKey测试仍然是1而不是2。 有人可以让我更好地理解registerDefaults或者我的上述神学是对吗? 如果我的异常是正确的,那么它是否意味着只有在没有为该特定键设置对象时才会获取默认值? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

  

registerDefaults方法是设置默认值而不是实际值

是。只有在没有为该键设置特定值时,才会将字典中传递给registerDefaults:的值返回给您。

为密钥@"1"设置值@"test"时,您可以隐藏" registerDefaults:来电中注册的默认值。

如果你这样做

[NSUserDefaults standardUserDefaults] registerDefaults:@{@"a":@"1", @"b":@"2"}, nil]];
[[NSUserDefaults standardUserDefaults] setObject:@"200" ForKey:@"b"]; // Override

然后请求密钥@"a"@"b"的值,您获得@"1"的默认值@"a"@"200"的特定值{ {1}}。