2014-03-12 47 views
0

我正在发出声音UserDefaults,我管理的很好,它的工作,然后我设置YES/NO值。NSUserDefaults - 如何设置开始值?

[[NSUserDefaults standardUserDefaults] setBool:YES forKey:kSoundEnabled]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 

如何为第一次应用程序运行设置YES声音参数,以及在哪里可以做到这一点?

+2

为什么不检查[[NSUserDefaults的standardUserDefaults] objectForKey:kSoundEnabled] ==零和局部变量设置为YES? –

回答

7

您可以使用registerDefaults:设置初始值,其中包含所有初始密钥的NSDictionary及其各自的值。例如:

[[NSUserDefaults standardUserDefaults] registerDefaults:@{ kSoundEnabled : @YES }]; 
+3

...这是以一种很好的方式实现的:注册的默认值不存储到磁盘,只要在内存中检查,如果没有存储。因此,您可以随时随意更改这些默认设置,而无需任何遗留问题。 – Tommy

0

在您的应用程序委托(通常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]; 
    } 
} 
+0

使用'NSUserDefaults registerDefaults:'更好。 – rmaddy

+0

@rmaddy,你为什么这么认为? – user3358463

+0

@ user3358463因为这是它的目的。它可以在不需要检查'nil'或写入初始值的情况下设置默认值。一旦默认值被注册,你的代码中就不需要任何特殊的逻辑来检查给定键是否有值。您只需获得价值并采取相应行动。它更干净。 – rmaddy