0

私が使用しているコードは次のとおりです。

NSFileManager* defaultMgr = [NSFileManager defaultManager];
if (![defaultMgr fileExistsAtPath:path]) {
 return nil;
}

パスは、システム上のファイルへの URL で、「file://localhost/private/var/mobile/Applications/blahblahblah」のようになります。

これは、fileExistsAtPath: への呼び出しが行われると、SIGABRT でクラッシュします。ファイルは存在し、おそらく文字列形式はこのメソッドが好むものではありませんが、NO を返す必要があります。このコードは非常に人気のあるライブラリの一部であり、パスの存在を厳密に確認する必要はありませんが、このメソッドを直接使用する必要がある場合に備えて、ここで何が起こっているのかを理解したいと思っています.

特に:

  1. ライブラリの作成者はこの方法を正しく使用していますか?
  2. このメソッドからの例外をどのようにキャッチまたは期待するのでしょうか?
    (SDK ドキュメントでは、このメソッドによってスローされる可能性のある例外については説明していません。)
  3. これは Apple に報告すべきバグですか?

もう1つの詳細:iOS 4.1を搭載したiPhone 4デバイスでこれを実行しています

4

1 に答える 1

0

いくつかの問題が思い浮かびます。

1)NSFileManagerは、URLではなくパスで機能します。「file://」は必要ありません。

2)@"..."のようなNSStringが必要です。

3)ファイルパスをアプリケーションのサンドボックス内に保持するようにしてください。

于 2010-10-24T22:19:24.107 に答える