我有以下代码
[[categories objectAtIndex:row]objectForKey:@"name"];
其中categories是nsmutablearray ..它在tableview中,但如果类别有0行(非null),它会给出异常并崩溃..例外是
由于未捕获的异常'NSRangeException'而终止应用程序,原因:' - [__ NSCFArray objectAtIndex:]:index(0)超出bounds(0)'
所以如何加载表而不抛出异常
答案 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)
错误的是你要求的数组元素不存在。