iphone app で設定ファイルを利用する。

アプリの設定に関する情報については、便利な設定ファイル用のクラスがあるのでこれを利用すると便利。

設定ファイルに保存する。

こんな感じで色の設定とオン/オフのスイッチを配置して、設定するケースを考える。
まず。画面はモーダルでメイン画面への誘導のBackボタンを配置した。
このBackボタンが押された場合に、設定を保存する。

- (IBAction) backToMain{
	NSLog(@"backToMain%@",@"_in");
	NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
	[defaults setObject:[srGunViewController getColorString:color1Segment.selectedSegmentIndex]
				 forKey:@"color1"];
	[defaults setObject:[srGunViewController getColorString:color2Segment.selectedSegmentIndex]
				 forKey:@"color2"];
	[defaults setBool:counterSw.on forKey:@"countFlg"];
	[defaults synchronize];
	[self dismissModalViewControllerAnimated:YES];
	NSLog(@"backToMain%@",@"_out");
}

NSUserDefaults クラスを使う。
ここでは、キー「color1」にsetObjectメッセージを利用してオブジェクトを登録している。
Bool値を登録する場合は、setBoolを利用する。

そして最後に設定を保存する。「synchronize」メッセージを送る。

次に、設定ファイルを読み込む側の実装。
このケースでは、画面表示に関する設定を行っているので、

- (void)viewWillAppear:(BOOL)animated{
	NSLog(@"viewWillAppear%@",@"_in");
	// 設定ファイルのロード
	[self defaltSettingLoad];
	[self setLabelColor:nomalColor];
	[self countOptionLoad];
	NSLog(@"viewWillAppear%@",@"_out");
}

ビューが表示される前に設定を読み込み、それを反映して色を変更する処理を記載。
ここでローカルメッセージ「defaltSettingLoad」を定義し、その中で[defaults stringForKey:@"color1"]を呼び出す。
Bool値の場合は、[defaults boolForKey:@"countFlg"]このような感じ。

- (void) defaltSettingLoad{
	NSLog(@"defaltSettingLoad%@",@"_in");
	NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
	if (![defaults stringForKey:@"color1"]) {
		// 書き込む
		[defaults setObject:@"greenColor" forKey:@"color1"];
		[defaults setObject:@"greenColor" forKey:@"color2"];
		[defaults setBool:YES forKey:@"countFlg"];
		[defaults synchronize];
	}
	nomalColor = [srGunViewController getColorByName:[defaults stringForKey:@"color1"]];
	countFlg = [defaults boolForKey:@"countFlg"];
	NSLog(@"defaltSettingLoad%@",@"_out");
}

あとは、初期実行時で設定ファイルに存在しない場合があり得るので、それを書き込む異例処理を記載。
(それをviewAppearedでやるのは微妙だけど、とりあえずです)

おしまい。