CHCSVParser - 如何从webserver加载

时间:2012-12-15 10:12:32

标签: iphone ios ipad csv ios6

我想从每天更新的网络服务器解析csv。我正在使用此链接https://github.com/davedelong/CHCSVParser中的csvparser,我正在使用此代码:

 NSError *err = [[[NSError alloc] init] autorelease];
NSString *lunchFileURL = [[NSString stringWithFormat:@"http://www.somewhere.com/LunchSpecials.csv"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSString *lunchFile = [NSString stringWithContentsOfURL:[NSURL URLWithString:lunchFileURL] encoding:NSUTF8StringEncoding error:&err];
CHCSVParser *p = [[CHCSVParser alloc] initWithContentsOfCSVString:lunchFile usedEncoding:&encoding error:nil];        

我收到此错误:

 No visible @interface for 'CHCSVParser' declares the selector 'initWithContentsOfCSVString:usedEncoding:error:'        

我查看了此链接Load remote csv into CHCSVParser并且它无效。我是ios的菜鸟,请让我知道如何解决这个问题。真的感谢帮助。谢谢你。

1 个答案:

答案 0 :(得分:1)

应该是:

NSError *err;
NSString *lunchFileURL = [[NSString stringWithFormat:@"http://www.somewhere.com/LunchSpecials.csv"] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

NSString *lunchFile = [NSString stringWithContentsOfURL:[NSURL URLWithString:lunchFileURL]
                                               encoding:NSUTF8StringEncoding
                                                  error:&err];

// if you're going to create a CHCSVParser yourself, the syntax is:

CHCSVParser *p = [[CHCSVParser alloc] initWithCSVString:lunchFile
                                               encoding:NSUTF8StringEncoding
                                                  error:&err];

// or, if you're going to use NSArray+CHCSVAdditions.h, the syntax might be:

NSArray *array = [[NSArray alloc] initWithContentsOfCSVString:lunchFile
                                                     encoding:NSUTF8StringEncoding
                                                        error:&err];

注意:

  • 您不需要alloc / init NSError个对象;这些带有NSError **参数的类会在遇到错误时为您创建自动释放错误对象;否则他们不管它;

  • CHCSVParser类方法不是initWithContentsOfCSVString,而是initWithCSVString;

  • 或者,如果您使用NSArray类扩展,则语法为arrayWithContentsOfCSVStringinitWithContentsOfCSVString;以及

  • 您指定了&encoding的编码,但此参数不是指针,所以我看不出它可能是正确的;我刚刚指定了编码。

我假设您要使用NSArray+CHCSVAdditions类别方法initWithContentsOfCSVStringarrayWithContentsOfCSVString(它为您提供autorelease个对象),而不是CHCSVParser,但这取决于你。