在iOS应用程序中寻找一些建议。
基本上我的应用程序所做的是生成一个CSV文件,在一段时间内记录某些事件。因此,用户可以按一个按钮,并在日志中添加一个条目,说“在时间T发生X型事件”
我这样做的方法是维护一个存储NSStrings的NSMutableArray。每个事件都会向NSMutableArray添加一个字符串。
当用户完成会话后,他们可以“导出”该文件。我正在使用NSMutableArray的writeToFile;然后我使用电子邮件界面将该文件作为CSV发送到目标电子邮件。
除了生成的CSV文件中包含一些元数据外,一切正常。具体来说,我相信在我看到的文件的顶部以及在excel中打开的每行单元格的开头。
这是我正在使用的数据结构(NSMutableArray)或数据类型(NSString)中固有的东西吗?有没有办法让我获得原始数据?
如果需要,我可以上传代码(我现在不在工作计算机附近,所以我正在测试水域,看看是否有一些简单的事情可以阻止我看到这个元数据。)
谢谢!
答案 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字符串。