2012-12-15 88 views
0

加載我想從網絡服務器它獲取更新everyday.I正在使用此鏈接https://github.com/davedelong/CHCSVParser的csvparser,我用這個代碼解析CSV:CHCSVParser - 如何從網絡服務器

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,請讓我知道如何解決這個問題。真的提前欣賞help.Thanks。

+0

感謝Sachin的編輯。 –

+1

僅供參考,我用兩個例子更新了我的答案。底線,'initWithContentsOfCSVString'是'NSArray'類別方法,而不是'CHCSVParser'方法。 – Rob

回答

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 **參數的類將爲您創建autorelease錯誤對象;否則他們會放棄它;

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

  • 另外,如果您使用NSArray類擴展,那麼語法是arrayWithContentsOfCSVStringinitWithContentsOfCSVString;和

  • 您指定了編碼&encoding,但此參數不是一個指針,所以我不明白怎麼可能是正確的;我剛剛指定了編碼。

我假設你想使用的NSArray+CHCSVAdditions類方法initWithContentsOfCSVStringarrayWithContentsOfCSVString(它給你一個autorelease對象),而不是CHCSVParser,但它是由您決定。

+0

永遠的答案。非常感謝你Rob.Awesome! –