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 を取り扱う感じになります。
[ もどる ]