我正在发出声音UserDefaults,我管理的很好,它的工作,然后我设置YES/NO值。NSUserDefaults - 如何设置开始值?
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kSoundEnabled];
[[NSUserDefaults standardUserDefaults]synchronize];
如何为第一次应用程序运行设置YES声音参数,以及在哪里可以做到这一点?
我正在发出声音UserDefaults,我管理的很好,它的工作,然后我设置YES/NO值。NSUserDefaults - 如何设置开始值?
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kSoundEnabled];
[[NSUserDefaults standardUserDefaults]synchronize];
如何为第一次应用程序运行设置YES声音参数,以及在哪里可以做到这一点?
您可以使用registerDefaults:
设置初始值,其中包含所有初始密钥的NSDictionary
及其各自的值。例如:
[[NSUserDefaults standardUserDefaults] registerDefaults:@{ kSoundEnabled : @YES }];
...这是以一种很好的方式实现的:注册的默认值不存储到磁盘,只要在内存中检查,如果没有存储。因此,您可以随时随意更改这些默认设置,而无需任何遗留问题。 – Tommy
在您的应用程序委托(通常AppDelegate.m
)做
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
NSUserDefaults* userDefaults = [NSUserDefaults standardUserDefaults];
if([userDefaults objectForKey:kSoundEnabled] == nil) {
[userDefaults setObject:@YES forKey:kSoundEnabled];
[userDefaults synchronize];
}
}
使用'NSUserDefaults registerDefaults:'更好。 – rmaddy
@rmaddy,你为什么这么认为? – user3358463
@ user3358463因为这是它的目的。它可以在不需要检查'nil'或写入初始值的情况下设置默认值。一旦默认值被注册,你的代码中就不需要任何特殊的逻辑来检查给定键是否有值。您只需获得价值并采取相应行动。它更干净。 – rmaddy
为什么不检查[[NSUserDefaults的standardUserDefaults] objectForKey:kSoundEnabled] ==零和局部变量设置为YES? –