0

毎日更新される Web サーバーから 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ありません。パラメータを取るこれらのクラスは、エラーが発生した場合に autorelease エラー オブジェクトを作成します。そうでなければ、彼らはそれをそのままにしておきます。initNSErrorNSError **

  • CHCSVParserクラス メソッドはではinitWithContentsOfCSVStringなく、むしろinitWithCSVString;

  • または、クラス拡張を使用する場合NSArray、構文はarrayWithContentsOfCSVStringorinitWithContentsOfCSVStringです。と

  • のエンコーディングを指定しました&encodingが、このパラメーターはポインターではないため、それがどのように正しいのかわかりません。エンコーディングを指定しました。

NSArray+CHCSVAdditionsではなく、カテゴリメソッドinitWithContentsOfCSVStringまたはarrayWithContentsOfCSVStringautoreleaseオブジェクトを提供する)を使用したいと思いますが、それはあなたCHCSVParser次第です。

于 2012-12-15T15:29:28.347 に答える