OStack程序员社区-中国程序员成长平台

标题: ios - registerDefaults 方法设置默认值而不是实际值。? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 22:10
标题: ios - registerDefaults 方法设置默认值而不是实际值。?

我想了解的功能,

[NSUserDefaults standardUserDefaults] registerDefaults:];

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

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

然后调用,

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

我看到 valueForKey 测试仍然是 1 而不是 2。 有人可以让我更好地理解 registerDefaults 还是我上面的 anology 正确? 如果我的anology 是正确的,那么这是否意味着只有在没有为该特定键设置对象时才使用默认值? 提前致谢。



Best Answer-推荐答案


Does registerDefaults method set the default value and not the actual value

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

当您为键 @"test" 设置值 @"1" 时,您“隐藏”了在 registerDefaults 中注册的默认值: 调用。

如果你这样做

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

然后请求键@"a"@"b"的值,你得到默认值@"1" @"a"@"200" 的具体值对于 @"b"

关于ios - registerDefaults 方法设置默认值而不是实际值。?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23428005/






欢迎光临 OStack程序员社区-中国程序员成长平台 (https://ostack.cn/) Powered by Discuz! X3.4