【问题标题】:iphone: objectAtIndex crash when tableview have no dataiphone:tableview没有数据时objectAtIndex崩溃
【发布时间】:2011-09-10 19:09:48
【问题描述】:
我有以下代码
[[categories objectAtIndex:row]objectForKey:@"name"];
其中 categories 是 nsmutablearray .. 它在 tableview 中,但如果类别有 0 行(非空),它会给出异常和崩溃 .. 异常是
由于未捕获的异常“NSRangeException”而终止应用程序,原因:“-[__NSCFArray objectAtIndex:]: index (0) beyond bounds (0)”
那么如何加载表格而不抛出异常
【问题讨论】:
标签:
iphone
objective-c
nsmutablearray
【解决方案1】:
如果您尝试访问任何内容,空数组将引发此异常,因为如果数组为空,则在任何索引处都不会有对象。就像我没有车,但你要借我的车..如果我没有车,你就不能借我的车(然后我向你扔了一个例外的拳头,让我意识到我太穷了,不能拥有车) ! =)
改为这样做:
if ([categories count]) {
[[categories objectAtIndex:row]objectForKey:@"name"];
....
}
编辑:
实际上,您可能希望更改 if 语句以确保它至少具有 row + 1 数量的对象。
if (([categories count] - 1) >= row) {
[[categories objectAtIndex:row]objectForKey:@"name"];
....
}