2011-09-15 11 views
0

私はNSArray 'courseArray'にデータを解析するためにJSONを使用しています。次に、このデータをNSPredicateでフィルタリングし、 'rows'に格納します。問題は、私は '行'が空であるかどうかを判断する方法を知らないということです。レコードが存在する場合、行には適切なオブジェクトが含まれますが、レコードが存在しない場合はアプリケーションがクラッシュします(NSLogを使用して空の配列の内容を表示しても、オブジェクトがない場合)。どうすればこの問題を解決できますか?objective-c空NSArrayエラー

if (dict) 
{ 
    courseArray = [[dict objectForKey:@"lab"] retain]; 
    NSPredicate* predicate = [NSPredicate predicateWithFormat:@"labNumber== %@",labSelected]; //filter 
    rows = [[courseArray filteredArrayUsingPredicate:predicate]retain]; 
} 

[jsonreturn release]; 

self.formattedTextView.opaque = NO; 
self.formattedTextView.backgroundColor = [UIColor clearColor]; 

NSLog(@"array %@",rows); 

**NSDictionary *currentSelection = [rows objectAtIndex:0];** (app crashes at this line - [NSArray objectAtIndex:]: index 0 beyond bounds for empty array') 
NSString *labNumber = [currentSelection objectForKey:@"labNumber"]; 

答えて

1

ノミネートされたインデックスにあるオブジェクトがない場合は例外が発生します助けになることができる別の方法がここに

[courseArray containsObject:(id)]

2

-objectAtIndex:でもif([courseArray count] > 0)をお試しください。 rowsが空の場合、インデックス0のオブジェクトは存在しないため、例外が発生します。あなたが例外をキャッチしないので、その結果、あなたのアプリは終了します。

[rows count]と0を比較して、その中に何かがあるかどうかを確認し、そうでない場合は適切に反応することをお勧めします。

+0

エラーを止める方法はわかりませんが([行数] == 0)、試みてみましたが、それでも動作しませんでした "if(rows!= nil) –

+0

あなたのアプリは、 '[rows countFor]:0]'行で例外を発生させていますが、 '[rows count]'がゼロ以外の値にならないように、欠陥が問題を混乱させた? – Tommy

関連する問題