iphone - 如何在iPhone中将CSV格式转换为NSData或NSString?

标签 iphone objective-c csv

我正在制作一个需要当前股票价格的 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"
    ),
        (
        ""
    )
)

它返回 NSArraysNSArraysNSStrings

关于iphone - 如何在iPhone中将CSV格式转换为NSData或NSString?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4507636/

相关文章:

iPhone 崩溃日志不包含方法或行号

iphone - 导航栏在新联系人页面上不可见

iphone - 在 iOS 5 上禁用字幕会在屏幕上保留最后显示的字幕文本

Python csv.writer 添加不需要的字符

JSON 反序列化仅在实时构建中抛出循环引用

mysql - 为什么MySQL Workbench表数据导入向导会导入0条记录?

ios - 如何设置视频录制10秒限制并实时删除10秒旧电影部分 - Swift iOS

iphone - 更改静态库的源需要清理并在 xcode 4 中构建

objective-c - NSMutableArray 作为实例变量

iphone - XCode 4 - 在调试期间观察自定义变量的值