17

ファイルを文字列にロードしようとしています。私が使用しているコードは次のとおりです。

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

ファイル名として @"about" を渡すと、まったく問題なく動作し、コードが機能することが示されます。ファイル名として @"eula" を渡すと、「Cocoa エラー 258」で失敗し、NSFileReadInvalidFileNameError に変換されます。ただし、ファイルの内容を入れ替えても名前を同じままにすると、他のファイルはファイル名に問題がないことを証明できず、内容に関係があります。

about ファイルはかなり単純な HTML ですが、eula ファイルは法務部門によって Word からエクスポートされた大量の混乱です。

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

どうもありがとう、

サム

4

6 に答える 6

10

私はちょうどこの問題で 45 分を費やしましたが、私の場合のみ、解決策はばかげていて、問題はわずかに異なっていました。

  • リソース ディレクトリに Playlist.txt というファイルがありました。ちゃんと読み込んでいました。
  • ファイルは、XCode 内からある時点で変更されました。
  • 上記と同じエラーで、ファイルが正しくロードされなくなりました。ただし、移動もエンコーディング タイプも変更されていません。
  • XCode ディレクトリ内のファイルに対して command-I (Get Info) を実行すると、(予想どおり) UTF-8 であることがわかりました。
  • ファイルを読み取る「usedEncoding」の方法を試しましたが、さいころはありませんでした。同じエラー、エンコーディングは null を返しました。
  • 最後に、XCode からファイルを消去し、再度ドラッグして、すべてクリーンアップを実行しました。これで問題は解決しました。

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

于 2009-12-15T18:33:25.740 に答える
8

エラーはほぼ確実にファイルがUTF-8にないことですが、その通り、エラーレポートのバグのように聞こえます。

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

それで問題が解決した場合は、AppleBugReporterを使用てエラーレポートでバグを報告してください。

于 2009-06-16T01:47:47.603 に答える
4

あなたと同じエラーが発生しました。[[NSBundle mainBundle] pathForResource:@"pageList" ofType:@"txt"]] でファイル名を使用してください。

于 2010-10-27T09:10:31.307 に答える
3

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

ファイルのエンコーディングが不明な場合は、+stringWithContentsOfFile:usedEncoding:error:代わりにいつでも試してみて、それが機能するかどうか、どのようなエンコーディングが表示されるかを確認できます。

于 2009-06-16T00:09:00.477 に答える
0

これがあなたの問題かどうかはわかりませんが、同様のことがありました (stringWithContentsOfFile、JSON なし)。問題は、ファイルに CRLF (windows) の行末と西欧のエンコーディングが含まれていることでした。SubEthaEdit を使用して LF と UTF-8 に変換したところ、すべて正常に動作しました。

于 2010-05-21T05:04:25.380 に答える