0

アプリバンドルに約2.2MBのデータのcsvファイルがあります。このcsvファイルの内容をNSString変数に保存しようとしています。そのために使用されるコードは次のとおりです。

   NSString *strBundle = [[NSBundle mainBundle] pathForResource:@"large" ofType:@"csv"];
   NSError *error = nil;
   NSString *dataStr = [NSString stringWithContentsOfFile:strBundle
                                                  encoding:NSUTF8StringEncoding
                                                     error:&error];

ただし、上記のコードはファイルのテキストをdataStr変数に格納しません。代わりに、次のエラーメッセージが表示されます。

Error = Error Domain = NSCocoaErrorDomain Code = 261 "操作を完了できませんでした。(Cocoaエラー261。)" UserInfo = 0x1fdab580 {NSFilePath = / var / mobile / Applications / 0C68E393-FBBE-45F6-819E-336D31C78043/DemoApp。 app / large.csv、NSStringEncoding = 4}

ファイルが2.2mbよりも比較的小さくなるようにファイルのコンテンツを削除すると、上記のコードは正常に機能し、dataStr変数の文字列値を取得します。なぜこれが起こっているのか誰かに教えてもらえますか?NSString変数に保存できるデータ量に制限はありますか?それでは、CSVファイルのデータを保存するにはどうすればよいですか?

4

1 に答える 1

5

NSCocoaErrorDomain Code = 261は、NSFileReadInapplicableStringEncodingErrorです。

文字列エンコーディングが適用できなかったため、読み取りエラー。キーを使用して、userInfoディクショナリから不正なエンコーディングにアクセスしNSStringEncodingErrorKeyます。

これは、ファイルがではないことを示しますNSUTF8StringEncoding

次を使用できます。 - (id)initWithContentsOfFile:(NSString *)path usedEncoding:(NSStringEncoding *)enc error:(NSError **)error

エンコーディングまたはエラーを返します。

pathで指定されたファイルからデータを読み取ることによって初期化されたNSStringオブジェクト。返されるオブジェクトは、元のレシーバーとは異なる場合があります。ファイルを開くことができない場合、またはエンコードエラーがある場合は、nilを返します。

Appleドキュメント

于 2013-02-02T19:12:33.363 に答える