换句话说,我必须在应用程序的一个位置(例如启动时)调用
如果是添加性的,当我尝试覆盖一个值时会发生什么?
例如,给定以下代码...
registerDefaults
吗?还是可以根据需要注册默认值?如果是添加性的,当我尝试覆盖一个值时会发生什么?
例如,给定以下代码...
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"a": @1}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @2}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @3}];
最终的默认字典会是什么?
@{@"b": @3}
(替换)@{@"a": @1, @"b": @3}
(添加,覆盖值)@{@"a": @1, @"b": @2}
(添加,不覆盖值)- 崩溃,因为@"b"已经定义了。
registerDefaults
不会覆盖真实值。显式设置的值始终优先于默认值。只有在没有显式设置任何值时,才会返回默认值。 - rmaddy[[NSUserDefaults standardUserDefaults] setInteger: 3 forKey: @"b"]
来代替第二个“b”registerDefaults
调用,然后再调用registerDefaults
将“b”的值更改为其他值,输出中仍会保留3
。 - shimregisterDefaults
,没有提到也没有调用setInteger
或其他任何set
方法。这是关于理解registerDefaults
如何工作的。 - Senseful