objective -c empty NSArray错误

时间:2011-09-15 16:10:25

标签: objective-c json ios4 nsarray nsdictionary

我正在使用JSON将数据解析为NSArray' courseArray'。然后,我使用NSPredicate过滤此数据并将其存储到“行”中。问题是,我不知道如何确定'行'是否为空。例如:如果存在记录,行将包含相应的对象,但如果记录不存在,则应用程序崩溃(当我使用NSLog查看数组的内容时,我还相信它应该说是零吗?如果没有对象)。我怎样才能解决这个问题?

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"];

2 个答案:

答案 0 :(得分:2)

如果指定索引中没有对象,

-objectAtIndex:将引发异常。如果rows为空,则索引0处不会有对象,因此异常。由于您没有捕获异常,结果是您的应用程序被终止。

您可能希望将[rows count]与0进行比较以检查其中是否存在某些内容,如果没有则做出适当的反应。

答案 1 :(得分:1)

尝试if([courseArray count] > 0)另一种可以提供帮助的方法是

[courseArray containsObject:(id)]