0

我正在尝试编写一个 csv 文件。我手头有两个数组 - 一个带有标题(名称、编号等),另一个带有实际值(Jon、123 ...)。

现在,经过以下两个操作:

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

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

只有值数组被写入文件。我意识到我可能需要再次打开文件,但是在写入第一个数组之后我该怎么做呢?或者,如果不是这种情况,我到底做错了什么?

谢谢!

4

2 回答 2

1

第二行实际上是覆盖您在第一行中编写的文件。解决此问题的一种简单方法是简单地将第二个字符串附加到第一个字符串(因为您正在制作 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

第二次替换旧内容。因此,您可以读取旧内容,将旧内容附加到新内容中并保存在文件中。

写第一行

[[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 回答