iPhone開発ではまった. [plistとかNSMutableArrayとか編]

iPhoneでローカルにplistを作ってその中にログを保存しようしてはまってたのでまとめ.

書いてたのはこんなコード.

	NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
	NSString *documentsDirectory = [paths objectAtIndex:0];
	logPath = [documentsDirectory stringByAppendingPathComponent:@"log.plist"];

ここで, logPathはクラス変数でNSString *logPath;な感じ.
で, このlogPathに対してNSMutableArray *logArray;から[logArray writeToFile:logPath atomically:YES];をかませようとしておったのですよ.

で, はまったわけですが, 俺はてっきりlogArrayにNSDictionaryをaddObjectしてたりするのでそこらへんではまったんだろうと思い込んでたわけですよ. でもどうやらそうでも無いっぽい. じゃあパスがうまく取れてないのか, logArrayの初期化もarrayWithContentsOfFile:logPathとかでやってるからそれが悪いのか… とか疑いまくってたわけですが, もっと根本的なことでした. その答えがこれ.

	NSArray  *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
	NSString *documentsDirectory = [paths objectAtIndex:0];
	logPath = [[NSString alloc] initWithString:[documentsDirectory stringByAppendingPathComponent:@"log.plist"]];

要するに, [documentsDirectory stringByAppendingPathComponent:@"log.plist"]] ってのが返す値がautoreleaseなのか何なのか知らないけどすぐにゴミが入っちゃうんですね… ですので値でちゃんとコピーして上げたらあっさりと…
よし, 飯食いに行く.

Posted by on 2010_3_1 in 未分類,

コメントを残す