-[NSUserDefaults registerDefaults:] 是附加的并且它会覆盖值吗?
Is -[NSUserDefaults registerDefaults:] additive and does it overwrite values?
换句话说,我必须只在我的应用程序的一个位置调用 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" 已经定义。
- 加法,覆盖值。
示例:
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"a": @1}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @2}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @3}];
NSAssert([[NSUserDefaults standardUserDefaults] integerForKey:@"a"] == 1, @"");
NSAssert([[NSUserDefaults standardUserDefaults] integerForKey:@"b"] == 3, @"");
终极词典是:
@{@"a": @1, @"b": @3}
因此,您可以根据需要多次调用它。
Adds the contents of the specified dictionary to the registration domain.
换句话说,我必须只在我的应用程序的一个位置调用 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" 已经定义。
- 加法,覆盖值。
示例:
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"a": @1}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @2}];
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"b": @3}];
NSAssert([[NSUserDefaults standardUserDefaults] integerForKey:@"a"] == 1, @"");
NSAssert([[NSUserDefaults standardUserDefaults] integerForKey:@"b"] == 3, @"");
终极词典是:
@{@"a": @1, @"b": @3}
因此,您可以根据需要多次调用它。
Adds the contents of the specified dictionary to the registration domain.