这可能是一个简单的问题,但有人能够在下面的场景中给我一个提示是什么错误,我只是不明白。我有一个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 “
答案 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