我正在尝试检查以下内容并且都抛出一个越界错误
if ([objects count] < 1)
if ([objects count] == 0)
if ([objects count] <= 0)
这三个人都出了界?如何在“if / else”语句中使用它?是否无法检查NSArray是否包含零对象。
答案 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
}