2012-01-16 6 views
0

私は1.5時間、円で回ってきました。今は助けが必要です。以下は、私のDocuments Directoryにファイルのリストを作成するために使用しているコードです。ディレクトリが空でない限り、すべて正常に動作します。なぜドキュメントディレクトリが空の場合、ファイル名のnsarrayを作成するとアプリケーションがクラッシュするのですか?

ディレクトリにコンテンツがあるかどうかを確認する前に、直接行うことはできますか?

IVEは

if ([[[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error] objectAtIndex:0]){ 
fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory error:&error]; 
} 

を試みたが、それはまた、アプリ

///////////////////// NOOB間違い警報をクラッシュ/// /////////////////

OK私の問題は、笑私のアプリをクラッシュしていました何のコード

NSLog(@"fileList: %@",[fileList objectAtIndex:fileList.count-1]); 

の私の次の行、私は認める私自身のせいでした。 [fileList objectAtIndex:fileList.count-1]は範囲外です。私はなぜデバッガがそれほど多くのことを教えてくれなかったのか混乱しています。あなたの助けの人たちのための

おかげ

+3

ディレクトリが最初に空であるかどうかをチェックする必要はありません。そこに何もない場合、空の配列が得られます。次の行で[fileList objectAtIndex:0]などにアクセスしていますか?あなたが得ているクラッシュは何ですか? – jrturton

+0

残念なことに、デバッガの最初のクエリに答えるために編集された質問にエラーが発生せずにアプリケーションがクラッシュします。 – d4ndym1k3

+0

配列にブレークポイントを置き、チェックします。また、配列が空であるかどうかをチェックして、それに応じて条件を設定する必要があります。 – Sarah

答えて

1

メソッドは、ファイルが存在しない場合でも、クラッシュしてはいけません。 documentsDirectory変数が適切にNSStringのインスタンスとして設定されている場合はdocによると、

... Returns an empty array if the directory exists but has no contents. 

私は

  • をチェックします
  • documentsDirectory変数がすでに割り当て解除されていない場合

NSLogging documentsDirectoryコールが適切な第1ステップになる直前。

1

ディレクトリにコンテンツがない場合は、使用しているメソッドによって空の配列が返されます。何かが存在することを確認するために、そのcountをチェックし、配列から何かをアクセスしようとする前に

if ([fileList count] == 0) 
    // You have an empty directory 
+0

ファイルの作成中にクラッシュする前にクラッシュします。 – d4ndym1k3

+0

fileListをどのように宣言していますか?デバッガのコンソールで 'bt'を試しましたか? – jrturton

+0

btは何も表示せず、新しい行だけを返します – d4ndym1k3

関連する問題