ユーザーデフォルトについて
アプリケーションの初期設定
アプリケーションの初期設定は、NSUserDefaultsクラスを利用します。初期設定のインスタンスは、アプリケーションごとに一つだけです。
初期設定
アプリケーションをインストールした直後は、出荷時の設定の初期値を適用するようにします。アプリケーションデリゲートの initializeメソッドを利用し初期値を適用します。NSUserDefaults に初期値を設定するには、NSDictionary でキーと値のセットを用意し、それを NSUserDefaults の registerDefaults メソッドに登録します。
+ (void)initialize { // NSUserDefaultsの取得 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // 初期値を設定 NSDictionary *appDefaults = [NSDictionary dictionaryWithObjectsAndKeys: @":", @"Separator", @"100.0", @"Average", @"NO", @"isValid", nil]; // 登録 [defaults registerDefaults:appDefaults]; [appDefaults release]; }
キーに対する値は全て文字列で設定します。BOOL 型の値であれば @"YES" や @"NO" 、数値型であれば @"100" や @"12.5" といった指定になります。
registerDefaultsメソッドで初期値を登録すると、既に同じキーが存在する場合は初期値をセットせず、キーが存在しない場合だけ値をセットしてくれます。
設定値の取得
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; // 値の取得 NSString *separator = [defaults stringForKey:@"Separator"]; NSInteger average = [defaults intergerForKey:@"Average"]; BOOL isValid = [defaults booleanForKey:@"isValid"];
設定の保存
設定を変更した場合、変更した値とキーの組み合わせで登録します。
それぞれ登録が出来たら、最後にsynchronizeメッセージを送ります。synchronizeを送ることで二次記憶に保存されます。保存はアプリケーション終了時に行う方法や、変更の都度行う方法があります。都度保存を行うと、アプリケーションがクラッシュしたとしても最後に変更した設定は残ります。しかし、設定項目が多い場合、保存による負荷がかかりパフォーマンスが低下します。
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; // 変数の値を NSUserDefaults に設定 [defaults setBool:isValid forKey:@"isValid"]; [defaults setInteger:average forKey:"Average"]; [defaults setObject:separator forKey:@"Separator"]; // セットした内容の保存 [defaults synchronize];