【问题标题】:NSInputStream returned nil for file stored in local documents directoryNSInputStream 为存储在本地文档目录中的文件返回 nil
【发布时间】:2015-06-04 06:36:53
【问题描述】:

我正在尝试解析下载的 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];
}

这里,URL 是 [NSURL URLWithString: filepath],但为此,stream 是 nil。

因此,它在这里崩溃了:

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 文件。

【问题讨论】:

    标签: ios objective-c parsing csv nsinputstream


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-03-23
      • 1970-01-01
      • 1970-01-01
      • 2022-01-05
      • 2017-03-31
      相关资源
      最近更新 更多