plistを読み込み、保存する方法

http://ameblo.jp/growing-flutter/entry-10407102031.html
http://d.hatena.ne.jp/It_lives_vainly/20090311/1236745568

データパーシステンスを実現する方法で、一番シンプルなのがplist(XMLフォーマット)で保存する方法。でも、シミュレータでは問題なく動作するのに、実機だとうまく動作しないというトラブルに悩まされました。どうやらwriteToFileできてないようなんですね…。

で、結局わかったのが、アプリケーションディレクトリ下のDocumentsディレクトリに保存するように記述しないと実機では保存できないということ。

- (NSString *)dataFilePath {
	NSString* a_home_dir = NSHomeDirectory();
	NSString* a_doc_dir = [a_home_dir stringByAppendingPathComponent:@"Documents"];
	NSString* a_path = [a_doc_dir stringByAppendingPathComponent:@"hoge.plist"];
	return a_path;
}

簡単に目的のパスを得られるよう、パスの文字列を戻すメソッドを作成。あとは実際にwriteToFileやinitWithContentsOfFileするときに引数に[self dataFilePath]を与えてやるようにしました。