【问题标题】: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"];
        ....
    }
    

    【讨论】:

      【解决方案2】:

      错在你请求的数组元素不存在。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-07
        • 1970-01-01
        相关资源
        最近更新 更多