NSUserDefaults に初期値を設定する : Objective-C プログラミング

PROGRAM


NSUserDefaults に初期値を設定する

NSUserDefaults でアプリケーションの設定値を管理する で、NSUserDefaults によるアプリケーション設定を扱う方法について記しましたけど、このように値を設定しなかった場合でも、取得できる既定値を設定することができるようになっています。

NSUserDefaults に既定値を設定するには、NSDictionary でキーと値のセットを用意して、それを NSUserDefaults の registerDefaults: メソッドに登録するという流れになります。

// NSDictionary に既定値をセットします。

NSMutableDictionary* keyValues = [NSMutableDictionary dictionary];

 

[keyValues setObject:@"NO" forKey:@"isValid"];

[keyValues setObject:@"100" forKey:@"numberItems"];

[keyValues setObject:@"ITEM LIST" forKey:@"titleName"];

 

// 用意した NSDictionary を既定値として設定します。

[[NSUserDefaults standardUserDefaults] registerDefaults:keyValuess];

このように、キーに対する値は全て文字列で設定します。

BOOL 型の値であれば @"YES" や @"NO" を、数値型であれば @"100" や @"12.5" といった指定で大丈夫です。

 

必要なキーと値のセットが揃ったら、それを NSUserDefaults の registerDefaults: メソッドに渡してあげることで、これらのセットを初期値として登録することができました。

指定したキーに値が既に設定されている場合でも、ここで指定した初期値はセットされずに、既定の値を維持してくれます。

もちろん、設定済みの値を removeObjectForKey: メソッドで消去した場合にも、値を既定値にセットしてくれます。

 

ただし、値に nil を設定した場合にも、ここで指定した既定値が取得できてしまうので注意が必要です。

もっとも、NSDictionary のような Key-Value コーディングの場合、値として nil を持つことはできないようになっているので、NSUserDefaults についても同じように注意して nil を取り扱う感じになります。

[ もどる ]