NSarray计数超出界限

时间:2012-06-13 21:09:47

标签: objective-c nsarray

我正在尝试检查以下内容并且都抛出一个越界错误

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

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

4 个答案:

答案 0 :(得分:3)

如果您刚刚定义了指针但未初始化objects实例,则会出现非常奇怪的行为。作为一个可可开发者,我被

之类的东西烧了至少两次
NSMutableArray *objects;
...
if ( [objects count] == 0 )
{
    .... // do something 
}

您确定要初始化它,例如像这样:

NSMutableArray *objects = [NSMutableArray array];

因为它真的应该适用于那种情况!

答案 1 :(得分:0)

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

此代码适用于任何阵列。 超出界限异常意味着您尝试调用类似

的内容
[myArray objectAtIndex:0];

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

答案 2 :(得分:0)

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

一般来说,为了防止尝试访问nil或空数组,我通常会这样做:

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

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

答案 3 :(得分:0)

您也可以试试这个。

if(![objects lastObject])
{
    //... Do Something
}