ファイルを文字列にロードしようとしています。これが私が使用しているコードです:
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ファイル内の何かを知っている人はいますか?
どうもありがとう、
サム
エラーはほぼ確実にファイルがUTF-8にないことですが、その通り、エラーレポートのバグのように聞こえます。
BBEdit(または無料のTextWrangler)でeulaファイルを開き、使用されているエンコーディングを確認します。エンコーディングをUTF-8に変更して保存します。 2つのファイルを比較して、どのような違いが現れたかを確認します。元のファイルを新しいファイルに置き換えます(不具合を修正します)。
それで問題が解決した場合は、 Apple Bug Reporter を使用してエラーレポートでバグを報告してください。
私はこの問題に45分を費やしましたが、私の場合のみ、解決策は愚かであり、問題はわずかに異なりました。
XCodeが魔法のように物事を(誤って)キャッシュして、何時間もの無駄な時間を引き起こしたのはこれが初めてではありません。このような意味のないエラーが発生した場合は、ファイルを削除して置き換え、すべてのターゲットをクリーンアップしてみてください。
同じエラーが発生しました。[[NSBundlemainBundle] pathForResource:@ "pageList" ofType:@ "txt"]]でファイル名を使用してください。頑張ってください!
+stringWithContentsOfFile:encoding:error:
この場合、間違ったエンコーディングを指定すると失敗します。あなたの@"eula"
ファイルはUTF8でエンコードされていますか?
ファイルのエンコーディングがわからない場合は、いつでも試してみてください +stringWithContentsOfFile:usedEncoding:error:
代わりに、それが機能するかどうか、どのエンコーディングが使用されるかを確認してください。
同じエラーが発生しました。
少し遊んでみると、ターゲットのコピーバンドルリソースにファイルを含めていないようでした。
私はそれをしました、そしてそれはうまくいきました。
しかし、言わなければならないのは、エラーはそのような単純な原因ではかなり誤解を招くものです。 Xcodeからの悪い推測
これがあなたの問題かどうかはわかりませんが、私は似たようなもの(stringWithContentsOfFile、JSONなし)を持っていました。問題は、ファイルにCRLF(windows)行末とWestern-whatever-it's-いわゆるエンコーディングがあることでした。 SubEthaEditを使用してLFおよびUTF-8に変換しましたが、すべて正常に動作します。