2009-06-15 12 views
17

ファイルを文字列にロードしようとしています。私が使用しているコードは次のとおりです。NSString stringWithContentsOfFileが間違ったエラーコードのように失敗する

NSError *error = nil; 
NSString *fullPath = [[NSBundle mainBundle] pathForResource:filename 
                ofType:@"html"]; 
NSString *text = [NSString stringWithContentsOfFile:fullPath 
              encoding:NSUTF8StringEncoding 
               error:&error]; 

@ "about"がファイル名として渡された場合、コードは正常に動作していることを示しています。 @ "eula"をファイル名として渡すと、NSFileReadInvalidFileNameErrorに変換される 'Cocoa error 258'で失敗します。しかし、ファイルの内容を入れ替えても名前を同じにしておけば、もう一方のファイルはファイル名に間違いがないことを証明することができません。これはコンテンツと関係します。

aboutファイルはかなりシンプルなHTMLですが、eulaファイルは法務部門からWordからエクスポートされた大混乱です。

このエラーが発生する可能性のあるHTMLファイルの内容を知っている人はいますか?

多くのおかげで、

サム

答えて

8

エラーはほとんどあなたのファイルがUTF-8ではないことをほぼ確実に示していますが、エラーレポートのバグのように聞こえます。

eulaファイルをBBEdit(または無料のTextWrangler)で開き、使用するエンコーディングを確認します。エンコードをUTF-8に変更して保存します。 2つのファイルを比較して、どのような違いが現れているかを確認してください。元のファイルを新しいファイルに置き換えます(不具合を修正します)。

問題が解決する場合は、Apple Bug Reporterを使用して、エラーレポートのバグを報告してください。

3

間違ったエンコーディングを提供している場合+stringWithContentsOfFile:encoding:error:、この場合には失敗する可能性が最も高い理由は次のようになります。 @"eula"ファイルがUTF8でエンコードされていますか?

ファイルのエンコーディングがわからない場合は、代わりに+stringWithContentsOfFile:usedEncoding:error:を試してみて、それが動作するかどうかを確認してください。

10

私はちょうどこの問題で45分を過ごしました。私のケースでは、解決策はで、愚かなであり、問​​題は少し異なります。

  • リソースディレクトリにPlaylist.txtというファイルがあります。それはうまくロードされていた。
  • ファイルがXCode内から一点で修正されました。
  • ファイルが正しく読み込まれなくなり、上記と同じエラーが発生しました。ただし、移動したことがなく、エンコードタイプも変更されていませんでした。
  • 私は、XCodeディレクトリのファイルに対してIコマンド(Get Info)を実行しました。これは、UTF-8であると私に言っていました。
  • 私は "usedEncoding"という方法でファイルを読み込みましたが、サイコロはありませんでした。同じエラーです。エンコーディングはnullを返しました。
  • 最後に、XCodeからファイルを消去し、再度ドラッグしてクリーンオールを行いました。それは問題を解決しました。

これは、XCodeが魔法のように(誤って)キャッシュすることで時間と時間が無駄になったのは初めてではありません。このような意味のないエラーがある場合は、ファイルの削除と置き換え、すべてのターゲットのクリーニングをお試しください。

0

これは問題なのかどうか分かりませんが、似たようなもの(stringWithContentsOfFile、JSONはありません)を持っていて、ファイルにCRLF(ウィンドウ)行末と西洋のものがあったということでしたいわゆるエンコード。私はSubEthaEditを使ってLFとUTF-8に変換し、すべてうまく動作します。

+0

正直、私はちょうどそれを開いて、ちょっと遊んで、エンコードを変更し、再びそれを保存しました - ファイルのどこかに無効な文字か、エンコードの問題。それは私を投げた非常に誤解を招くエラーメッセージでした! – deanWombourne

4

私はあなたと同じエラーがありました。 [[NSBundle mainBundle] pathForResource:@ "pageList" ofType:@ "txt"]]と幸運!

0

同じエラーが発生しました。

私はちょっと遊んだところ、ターゲットのコピーバンドルリソースにファイルを含めていないように見えました。

私はそれを行い、正常に動作しました。

しかし、言わなければならないのは、このような単純な原因では間違いがかなり誤解を招くことです。ただXcodeからの悪い推測

関連する問題