NSMutableArray removeObjectAtIndex导致错误

时间:2010-11-21 20:22:45

标签: iphone objective-c nsmutablearray

这可能是一个简单的问题,但有人能够在下面的场景中给我一个提示是什么错误,我只是不明白。我有一个NSMutableArray“playerArray”,它有“ZERO”,“ONE”,“TWO”,“THREE”对象。

我正在尝试删除“行”处的对象,但它不起作用。是不是因为它没有响应removeObjectAtIndex而返回一个不可变数组,因为异常似乎被抛出?

 NSUInteger row = 1; // [indexPath row];
 NSLog(@"playerArray:%@", playerArray);
 NSLog(@"row: %i", row);
 [playerArray removeObjectAtIndex:row];  

结果是:

  

playerArray :(
      ZERO,
      一,
      二,
      三个
  )
  2010-11-21 20:58:46.681 FamQuiz_v2 [2166:207]行:1
  2010-11-21 20:58:46.682 FamQuiz_v2 [2166:207] - [__ NSArrayI removeObjectAtIndex:]:无法识别的选择器发送到实例0x5e3b9a0
  2010-11-21 20:58:46.683 FamQuiz_v2 [2166:207] * 由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:' - [__ NSArrayI removeObjectAtIndex:]:无法识别的选择器发送到实例0x5e3b9a0 “

2 个答案:

答案 0 :(得分:20)

看起来您的数组实际上不是NSMutableArray。通过记录类名来验证它:

NSLog(NSStringFromClass([playerArray class]));

或者,检查:

if ([playerArray isKindOfClass: [NSMutableArray class]])
{
...
}

答案 1 :(得分:9)

错误消息表明playerArray是NSArray的一个实例,而不是NSMutableArray。您不能在NSArray的实例上调用removeObjectAtIndex。

-[__NSArrayI removeObjectAtIndex:]: unrecognized selector sent to instance