NSUserDefaultsで設定値を保存

NSUserDefaultsで大きなデータを保存しないようにとAppleは言っています。たとえば、iPhoneアプリで設定画面を作ってその状態を保存するという用途であれば、NSUserDefaultsが最適です。

UISwitch、UITextFiled、UISliderを画面に配置して、その値を保存/読み込みするのはこんな感じです。


保存

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

[defaults setBool:[mySwitch isOn] forKey:@"Switch"];
[defaults setObject:myTextField.text forKey:@"Text"];
[defaults setFloat:mySlider.value forKey:@"Slider"];

読み込み

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
	
// ファイルがない場合の初期値を設定
NSDictionary *defaultDic = [NSDictionary dictionaryWithObjectsAndKeys:
					[NSNumber numberWithBool:YES], @"Switch",
					[[[NSString alloc] init] autorelease], @"Text",
					[NSNumber numberWithFloat:0], @"Slider", nil];

[defaults registerDefaults: defaultDic];
	
// 保存した値を読み込む、保存した値がなければ、初期値を読み込む
mySwitch.on = [defaults boolForKey:@"Switch"];
myTextField.text = (NSString *)[defaults objectForKey:@"Text"];
mySlider.value = (float)[defaults floatForKey:@"Slider"];