gpt4 book ai didi

iphone - 将远程 csv 加载到 CHCSVParser 中

转载 作者:行者123 更新时间:2023-12-03 19:35:16 25 4
gpt4 key购买 nike

我正在使用 Dave DeLong 的 CHCSVParser 来解析 csv。我可以在本地解析 csv,但无法加载远程 csv 文件。今天我盯着我的 MacBook 太久了,答案就在我面前。这是我的代码:

NSString *urlStr = [[NSString alloc] initWithFormat:@"http://www.somewhere.com/LunchSpecials.csv"];
NSURL *lunchFileURL = [NSURL URLWithString:urlStr];
NSStringEncoding encoding = 0;
CHCSVParser *p = [[CHCSVParser alloc] initWithContentsOfCSVFile:[lunchFileURL path] usedEncoding:&encoding error:nil];
[p setParserDelegate:self];
[p parse];
[p release];

感谢有人可以给我的任何帮助。

最佳答案

-[NSURL path] 没有执行您期望的操作。

如果我有 URL http://stackoverflow.com/questions/4636428,那么它的 -path/questions/4636428 。当您将该路径传递给 CHCSVParser 时,它将尝试在本地系统上打开该路径。由于该文件不存在,您将无法打开它。

您需要做的(正如 Walter 指出的那样)是将 CSV 文件下载到本地,然后打开它。您可以通过多种不同的方式下载文件(+[NSString stringWithContentsOfURL:...]NSURLConnection 等)。一旦您将文件本地保存到磁盘或内存中的 CSV 字符串,您就可以将其传递给解析器。

如果这是一个非常大的文件,那么您需要使用本地副本的路径分配/init一个CHCSVParser CSV 文件的。然后,解析器将一点一点地读取它,并通过委托(delegate)回调告诉您它发现了什么。

如果 CSV 文件不是很大,那么您可以这样做:

NSString * csv = ...; //the NSString containing the contents of the CSV file
NSArray * rows = [csv CSVComponents];

这将返回 NSArraysNSArraysNSStrings

与最后一种方法类似的是使用 NSArray 类别方法:

NSString * csv = ...;
NSError * error = nil;
NSArray * rows = [NSArray arrayWithContentsOfCSVString:csv encoding:[csv fastestEncoding] error:&error];

这将返回相同的结构(NSArraysNSArraysNSStrings),但它还会为您提供一个 NSError 对象,如果它在 CSV 文件中遇到语法错误(即格式错误的 CSV)。

关于iphone - 将远程 csv 加载到 CHCSVParser 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4636428/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com