ページ 11

objective-c 結果が違う

Posted: 2011年4月27日(水) 00:41
by TEAS TEA
CSVファイルを読み込むという処理を作っております。
ただ問題が御座いまして変数に文字列を入れた物を
パスとして指定するとファイルが読み込めません。

NSString* fileName = [[NSString alloc] initWithString:@"2010_fall"];
と記載すれば読み込めるのですが
NSString* fileName = [[NSString alloc] initWithString:[[index objectAtIndex:(indexPath.row)] objectAtIndex:3]];
だと読み込めません。

[[index objectAtIndex:(indexPath.row)] objectAtIndex:3]には2010_fallが入っております。

NSLog( @"%@", fileName );と出力してみても値は同じ物が入っております。(2010_fall)
原因が全くわからないのですが
これだけでは問題ないようでしたら詳細のソースを貼ります。

コード:

	NSString* fileName = [[NSString alloc] initWithString:[[index objectAtIndex:(indexPath.row)] objectAtIndex:3]];
	//NSString* fileName = [[NSString alloc] initWithString:@"2010_fall"];
	NSLog( @"%@", fileName );
	NSString* path = [[NSBundle mainBundle] pathForResource:fileName ofType:@"csv"];
	NSError* error = nil;
	int enc = NSUTF8StringEncoding;
	NSString* text = [NSString stringWithContentsOfFile:path encoding:enc error:&error];
	NSArray* lines = [text componentsSeparatedByString:@"\n"];	// ファイルの分割

Re: objective-c 結果が違う

Posted: 2011年4月27日(水) 11:24
by めるぽん
index 配列はどうやって作りましたか?
このコードみたいに、CSV を読み込んで [text componentsSeparatedByString:@"\n"] としているなら、CSV のデータの改行コードが "\r\n" だった場合は分割された各文字列の最後に '\r' が残っている可能性があります。
CSV の改行コードが "\r\n" であるかどうかを確認してみて下さい。もしそうなら "\r\n" で componentsSeparatedByString するようにしてみて下さい。

Re: objective-c 結果が違う

Posted: 2011年4月27日(水) 18:42
by TEAS TEA
>>ぬるぽん様
まさにそれでした!!
なんとお礼を言っていいやら・・・。
こんな所にバグが潜んでいたとは思いもよりませんでした。

本当に困ってたので助かりました。
ありがとうございました。