2011-09-15 51 views
0

我正在使用JSON將數據解析到NSArray'courseArray'中。然後,我使用NSPredicate過濾這些數據並將其存儲到'行'中。問題是,我不知道如何確定'行'是否爲空。例如:如果存在一條記錄,那麼行將包含適當的對象,但是如果記錄不存在,那麼應用程序會崩潰(當我使用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

嘗試if([courseArray count] > 0)也能有所幫助這裏的另一種方法是,如果有提名的索引處沒有對象

[courseArray containsObject:(id)]

2

-objectAtIndex:將引發異常。如果rows爲空,則索引0處不會有對象,因此是例外。由於您沒有發現異常,結果是您的應用程序被終止。

您可能想要比較[rows count]到0,以檢查它是否有內容,如果不是,則適當地作出反應。

+0

我想了很多,但我不知道如何停止錯誤,我試過如果([行數] == 0),但它不工作,也試過「if(rows!= nil) –

+0

您的應用程序可以'如果你已經包裝了它,你仍然會在'[rows objectForIndex:0]'行中引發一個異常,除非'[rows count]'不爲零,否則你永遠不會得到它。是否可能有其他的錯字或小調缺陷混淆了這個問題? – Tommy