0

次のコードを使用してドキュメント ディレクトリにアクセスします。

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];

次のメッセージが表示されてアプリがクラッシュするのはなぜですか?

*** -[__NSArrayI objectAtIndex:]: index 0 beyond bounds for empty array

NSArray(不変の配列) がどのように空になるかわかりません。この関数は、ドキュメント フォルダーを配列で返すことになっています。何か案は?

4

4 に答える 4

1

1)クラッシュはありますか?

2)完全に関連しているわけではありませんが、役立つ可能性があります。

于 2012-10-17T16:35:49.243 に答える
0

によって返される配列には、NSSearchPathForDirectoriesInDomains要素がありません。空っぽです。まさにエラーメッセージの内容。

于 2012-10-17T16:33:59.367 に答える
0

代わりに使用してみてくださいNSHomeDirectory()... アプリケーションのホームディレクトリを取得するためのより良い方法です。

注: ドキュメント ディレクトリの後にいる場合は@"Documents/"、文字列に追加する必要がある場合があります。

于 2014-02-19T13:13:41.757 に答える
0

なぜ答えていませんが、Xcode 5以降:

NSString *documentsDirectory = [paths firstObject];

空の場合、例外は発生せず、nil が返されます。クラッシュはありません。

于 2014-02-19T13:02:46.173 に答える