0

我正在尝试检查以下内容并全部抛出越界错误

if ([objects count] < 1)
if ([objects count] == 0)
if ([objects count] <= 0)

三人都出界了?如何在“if/else”语句中使用它?是否无法检查 NSArray 是否包含零个对象。

4

4 回答 4

3

如果你只是定义了指针但没有初始化你的objects实例,你会得到非常奇怪的行为。作为一个初级可可开发者,我至少被类似的东西烧了两次

NSMutableArray *objects;
...
if ( [objects count] == 0 )
{
    .... // do something 
}

你确定你初始化了它,例如:

NSMutableArray *objects = [NSMutableArray array];

因为它真的应该在这种情况下工作!

于 2012-06-13T21:27:17.727 回答
0

我不认为这些代码行会导致这样的错误。

此代码适用于任何数组。越界异常意味着您尝试调用类似

[myArray objectAtIndex:0];

在一个空数组上。或者,换句话说,您试图访问一个不属于数组的对象。

于 2012-06-13T21:18:51.067 回答
0

你也可以试试这个。

if(![objects lastObject])
{
    //... Do Something
}
于 2012-06-14T05:41:29.373 回答
0

objectAtIndex您不应该得到越界异常,因为您甚至没有尝试访问数组中的元素——只有在调用数组并指定非法索引时才应该抛出越界异常。

通常,为了防止尝试访问 nil 或空数组,我通常会执行以下操作:

if(!objects || !objects.count) ...

这样,如果objects不存在则objects.count不会被调用。

于 2012-06-13T21:51:09.360 回答