我正在制作一个需要当前股票价格的 iPhone 应用程序。
我从下面给出的链接接收 CSV 格式的数据。
http://finance.yahoo.com/d/quotes.csv?s=RHT+MSFT&f=sb2b3jk
是否可以将 CSV 格式转换为 NSData 或 NSString 格式?如果是,我该怎么做?
还有什么其他替代方案吗?
最佳答案
不要重新发明轮子:CHCSVParser是一个用 Objective-C 编写的原生 CSV 解析器。它可以正确处理引用字段、转义字符等。它具有便捷方法 (+[NSArray arrayWithContentsOfCSVFile:...]
) 并对文件读取进行分块,以免产生内存不足警告。
这是(或多或少)您将如何使用它。 CSV 文件是远程文件,这让事情变得有点复杂,但并不复杂(您必须将 URL 的内容下载到字符串中,然后将该字符串传递到解析器中)。
#import "CHCSV.h"
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
NSString * csv = [NSString stringWithContentsOfURL:[NSURL URLWithString:@"http://download.finance.yahoo.com/d/quotes.csv?s=RHT+MSFT&f=sb2b3jk"]];
NSArray * rows = [NSArray arrayWithContentsOfCSVString:csv encoding:NSUTF8StringEncoding error:nil];
//You can also do: rows = [csv CSVComponents];
NSLog(@"rows: %@", rows);
[pool drain];
return 0;
}
此日志:
2010-12-23 09:05:44.431 CHCSVParser[99377:a0f] (
(
RHT,
"46.48",
"46.46",
"26.51",
"49.00"
),
(
MSFT,
"28.23",
"28.22",
"22.73",
"31.58"
),
(
""
)
)
它返回 NSArrays
的 NSArrays
的 NSStrings
。
关于iphone - 如何在iPhone中将CSV格式转换为NSData或NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4507636/