0

componentsSeparatedByCharactersInSet我的应用程序目前正在使用和componentsSeparatedByString方法的组合从 Web 服务解析 CSV 文件。由于文件非常大(平均 > 1 mb),在 iPad 上解析需要几秒钟,这太慢了。我的解决方案的内存占用也是一个问题(我将全文文件保存在内存中)。这就是为什么我正在寻找一种更快、内存效率更高的解决方案。我遇到了CHCSVParser可以NSInputStreams直接解析的,例如

NSInputStream *stream = [NSInputStream inputStreamWithFileAtPath:file]; 
CHCSVParser * p = [[CHCSVParser alloc] initWithInputStream:stream 
    usedEncoding:&encoding delimiter:';'];

(来自CHCSVParser上的示例项目)

我的问题:

我怎样才能得到一个NSInputStream作为的结果NSURLRequest(目前我将整个 CSV 文件作为一个NSData对象并将其转换为NSString以解析它)。

我可以直接使用NSInputStreamfrom an吗?NSURLRequestCHSVParser

您通常会建议使用带有 aCHCSVParser的 sinitWithInputStream方法,NSURLRequest还是在完整下载后将文档下载到内存并解析?

4

1 回答 1

2

使用 NSURLConnectionDelegate 和 NSOutputStream 将文件下载到磁盘(这样你在下载时使用尽可能少的内存),然后打开一个 NSInputStream 到同一个文件并将它传递给 CHCSVParser。

于 2013-06-21T18:16:04.797 回答