0

我想从每天更新的网络服务器解析 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 的菜鸟,请让我知道如何解决这个问题。非常感谢帮助。在此先感谢。

4

1 回答 1

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/对象initNSError这些带有NSError **参数的类会在遇到错误时为您创建自动释放错误对象;否则他们就不管它;

  • CHCSVParser方法不是initWithContentsOfCSVString,而是initWithCSVString

  • 或者,如果您使用NSArray类扩展,则语法为arrayWithContentsOfCSVStringor initWithContentsOfCSVString; 和

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

我假设你想使用NSArray+CHCSVAdditionscategory 方法initWithContentsOfCSVStringarrayWithContentsOfCSVString(它给你一个autorelease对象),而不是CHCSVParser,但这取决于你。

于 2012-12-15T15:29:28.347 回答