NSInputStream为存储在本地文档目录中的文件返回nil

时间:2015-06-04 06:36:54

标签: ios objective-c parsing csv nsinputstream

我正在尝试解析下载的CSV文件的内容。该文件存储在本地文档目录中的文件夹中。

文件路径: / Users / xyz / Library / Developer / CoreSimulator / Devices / C04089B6-4B9F-4F3A-A7C4-82225024CBE4 / data / Containers / Data / Application / 7412C7C6-71C7-47FE-810B-965116A6071C / Documents /rndftp/99999920150415152101.csv

我正在使用此方法创建NSInputStream:

- (instancetype)initWithContentsOfDelimitedURL:(NSURL *)URL delimiter:(unichar)delimiter {
NSInputStream *stream = [NSInputStream inputStreamWithURL:URL];
return [self initWithInputStream:stream usedEncoding:NULL delimiter:delimiter];
}

此处网址为[NSURL URLWithString:filepath] ,但为此,将为零。

因此,它崩溃了:

CHCSVParser *parser = [[CHCSVParser alloc] initWithContentsOfCSVURL:[NSURL URLWithString:filePath]];
        [parser parse];
NSArray *latestFileComponentsArray = [NSArray     arrayWithContentsOfCSVURL:[NSURL URLWithString:filePath]];

错误:

Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Invalid parameter not satisfying: stream'

可能的原因是什么?我正在使用CHCSVParser开源来解析csv文件。

1 个答案:

答案 0 :(得分:4)

我的不好,这里有一个小警告:如果文件是本地下载的,我们将URL指定为 fileURLwithPath :而不是URLWithString :,因此可以纠正导致错误的代码为:

CHCSVParser *parser = [[CHCSVParser alloc] initWithContentsOfCSVURL:[NSURL fileURLWithPath:filePath]];
        [parser parse];
        NSArray *latestFileComponentsArray = [NSArray arrayWithContentsOfCSVURL:[NSURL fileURLWithPath:filePath]];