0

csvファイルを書き込もうとしています。手元に2つの配列があります。1つはタイトル(Name、Numberなど)で、もう1つは実際の値(Jon、123 ...)です。

さて、次の2つの操作の後:

[[titles componentsJoinedByString:@", "] writeToFile:file atomically:YES];

[[values componentsJoinedByString:@", "] writeToFile:file atomically:YES];

値の配列のみがファイルに書き込まれます。ファイルを再度開く必要があるかもしれませんが、最初の配列を書き込んだ後、どうすればよいですか?または、そうでない場合、私が間違っているのは正確には何ですか?

ありがとう!

4

2 に答える 2

1

2行目は、実際には1行目に書き込んだファイルを上書きしています。この問題を回避する簡単な方法の1つは、2番目の文字列を最初の文字列に追加し(csvファイルを作成しているため、間に「\ n」を付ける可能性があります)、その文字列をファイルに書き込むことです。

NSString *str1 = [[titles componentsJoinedByString:@", "];
NSString *str2 = [[values componentsJoinedByString:@", "];
NSString *outputStr = [str1 stringByAppendingFormat:@"\n%@", str2];
[outputStr writeToFile:file atomically:YES];
于 2012-05-11T12:24:10.777 に答える
0

2回目は古い内容を置き換えます。したがって、古いコンテンツを読み取り、古いコンテンツに新しいコンテンツを追加して、ファイルに保存できます。

最初の行を書く

[[titles componentsJoinedByString:@", "] writeToFile:file atomically:YES];

毎回別の行を追加する必要がある場所

NSString *previousContent = [[NSString alloc] initWithContentsOfFile:file usedEncoding:nil error:nil];
NSString *str2 = [[values componentsJoinedByString:@", "];
NSString *outputStr = [previousContent stringByAppendingFormat:@"\n%@", str2];
[outputStr writeToFile:file atomically:YES];
于 2012-05-11T13:37:18.787 に答える