web-dev-qa-db-ja.com

NSUserDefaultキーの初期値を設定する方法は?

NSUserDefaultキーにいくつかの初期値を設定して、アプリの最初の実行で妥当な初期設定ができるようにします。 App Bundleの.plistでこれを行う簡単な方法に出くわしたと思いましたが、今は見つかりません。何か案は?

42
Suz

registerDefaultsNSUserDefaultsメソッドを使用する必要があります。バンドルにデフォルトの設定を含むplistファイルを準備し、そのplistを使用してデフォルトを登録します。

NSString *defaultPrefsFile = [[NSBundle mainBundle] pathForResource:@"defaultPrefs" ofType:@"plist"];
NSDictionary *defaultPreferences = [NSDictionary dictionaryWithContentsOfFile:defaultPrefsFile];
[[NSUserDefaults standardUserDefaults] registerDefaults:defaultPreferences];

アプリを起動するたびにこのコードを実行する必要があります。これらの値は、ユーザーのデフォルト階層の別のドメインに追加されます。アプリのユーザーデフォルトで特定のキーの値が提供されない場合、NSUserDefaultsはこのドメインにフォールバックし、そこから値を取得します。

71
Ole Begemann

多くのデフォルト値がある場合は、使用してみましょう ola's answer 、そうでない場合、これはいくつかのパラメータに適しています

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if (![defaults boolForKey:USERDEFAULT_IS_INITIALIZED]) { 
    [defaults setBool:YES forKey:USERDEFAULT_IS_INITIALIZED];

    // Set initial values 
    ...

    [defaults synchronize];
}
5
thanhbinh84
if ([[[[NSUserDefaults standardUserDefaults] dictionaryRepresentation] allKeys] containsObject:@"initialValuesHaveBeenWritten"])
{
    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:key1];
    [[NSUserDefaults standardUserDefaults] setValue:obj2 forKey:key2];


    [[NSUserDefaults standardUserDefaults] setValue:obj1 forKey:@"initialValuesHaveBeenWritten"];

    [[NSUserDefaults standardUserDefaults] synchronize];
}

注意:テストされていません。メモリから実行されます。

0
James Webster