导出到CSV文件时的NSMutableArray元数据

时间:2012-11-20 19:22:45

标签: objective-c nsstring nsmutablearray plist metadata

在iOS应用程序中寻找一些建议。

基本上我的应用程序所做的是生成一个CSV文件,在一段时间内记录某些事件。因此,用户可以按一个按钮,并在日志中添加一个条目,说“在时间T发生X型事件”

我这样做的方法是维护一个存储NSStrings的NSMutableArray。每个事件都会向NSMutableArray添加一个字符串。

当用户完成会话后,他们可以“导出”该文件。我正在使用NSMutableArray的writeToFile;然后我使用电子邮件界面将该文件作为CSV发送到目标电子邮件。

除了生成的CSV文件中包含一些元数据外,一切正常。具体来说,我相信在我看到的文件的顶部以及在excel中打开的每行单元格的开头。

这是我正在使用的数据结构(NSMutableArray)或数据类型(NSString)中固有的东西吗?有没有办法让我获得原始数据?

如果需要,我可以上传代码(我现在不在工作计算机附近,所以我正在测试水域,看看是否有一些简单的事情可以阻止我看到这个元数据。)

谢谢!

1 个答案:

答案 0 :(得分:0)

CSV是一种非常简单的格式。您可以使用分号分隔字符串,然后使用NSOutputStream将所有内容写入文件。

此代码假设您已经有一个包含CSV行的字符串数组:

NSOutputStream* csvoutput = [NSOutputStream outputStreamToFileAtPath:filepath append:NO];
[csvoutput open];
for (NSString* str in array) {
    NSString* tempStr = [str stringByAppendingString:@"\n"]; //new line
    NSData *strData = [tempStr dataUsingEncoding:NSUTF8StringEncoding];
    [csvoutput write:(uint8_t *)[strData bytes] maxLength:[strData length]];
}
[csvoutput close];

您最好创建一个模型类(Event)并使用Event-instances而不是字符串填充数组。这更干净,更有效率。然后,您将在导出到文件时创建CSV字符串。