iphone:tableview没有数据时objectAtIndex崩溃

时间:2011-09-10 19:09:49

标签: iphone objective-c nsmutablearray

我有以下代码

[[categories objectAtIndex:row]objectForKey:@"name"];

其中categories是nsmutablearray ..它在tableview中,但如果类别有0行(非null),它会给出异常并崩溃..例外是

  

由于未捕获的异常'NSRangeException'而终止应用程序,原因:' - [__ NSCFArray objectAtIndex:]:index(0)超出bounds(0)'

所以如何加载表而不抛出异常

2 个答案:

答案 0 :(得分:3)

如果尝试访问任何内容,空数组将抛出此异常,因为如果数组为空,则任何索引都不会有对象。这就像我没有车,但你要借我的车..如果我没有车,你就不能借我的车(然后我向你扔了一个例外的拳头让我意识到我太穷了,不能拥有一辆车) ! =)

请改为:

if ([categories count]) {
    [[categories objectAtIndex:row]objectForKey:@"name"];
    ....
}

编辑:

实际上,您可能希望更改if语句,以确保它至少有row + 1个对象。

if (([categories count] - 1) >= row) {
    [[categories objectAtIndex:row]objectForKey:@"name"];
    ....
}

答案 1 :(得分:1)

错误的是你要求的数组元素不存在。