我正在使用以下代码在删除对象之前检查对象是否存在:

if(titlescopy.count >= i)
{
   if([[titlescopy objectAtIndex:i] isKindOfClass:[NSString class]])
   {
       [titlescopy removeObjectAtIndex:i];
   }
}


但是,我收到此错误:


  *由于未捕获的异常'NSRangeException'而终止应用程序,原因:'*-[__ NSArrayM objectAtIndex:]:索引2超出范围[0 ..
  1]”
  *第一个抛出调用堆栈:(0x365a56c3 0x3881e97f 0x364f1055 0x494b 0x37fdb8d5 0x37fe7d75 0x37fe7a81 0x38001ddd 0x38001b97 0x172bd
  0x3805f8e5 0x3805f897 0x3805f875 0x3805f12b 0x3805f621 0x37f87d29
  0x37f74f29 0x37f74843 0x34ea25d3 0x34ea2203 0x3657a593 0x3657a537
  0x365793b9 0x364ec39d 0x364ec229 0x34ea131b 0x37fc88f9 0x283b 0x2798)
  libc ++ abi.dylib:终止调用引发异常(lldb)


为什么会这样呢?我正在使用的代码应在尝试删除它之前检查该对象是否存在,但显然不存在。

谢谢!

最佳答案

Objective-C中的数组索引从0开始,因此i = titlescopy.count超出范围。将您的if语句更改为:

if(titlescopy.count > i)

关于iphone - NSArray removeObjectAtIndex错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12331542/

10-12 05:33