NSMutableArray没有响应removeObjectAtIndex:

时间:2012-11-12 10:35:51

标签: objective-c nsmutablearray

我认为我遇到了一个困惑的状态,我正在做一些根本错误的事情,但我无法理解为什么以及为什么会这样。

图1:我的班级的财产。一个NSMutableArray。

Property

图2:我要执行的代码块,我想删除第11个对象。

Code

图3:调试控制台向我显示我的数组中有30个对象。

Console statement

现在,我在这里,认为这将是一件容易的事。因为,我已经删除并替换了源代码中其他NSMutableArrays中索引的对象。 图4: Stacktrace

我相信这告诉我NSMutableArray不响应removeObjectAtIndex。

有谁知道我做错了什么?我完全糊涂了。

不,这不是家庭作业......即使人们可以这么认为。我做。


修改: 在解析进入dagArray的对象期间发生了错误。

而不是[tempPeriod.dagArray addObject:object]我正在做一些完全不同的事情。

我正在使用不同的数组并将对象添加到该数组中,当解析器完成后,我使用tempPeriod.dagArray = [theOtherArray copy]导致此错误。 theOtherArray仍然是NSMutableArray仍然让我感到困惑。但我最好的猜测是copy对NSMutableArray做了一些事情,使它无法执行那些选择器。但我可能完全错了。

感谢您对此提出一些想法。

2 个答案:

答案 0 :(得分:2)

实际上它说NSArray没有响应removeObjectAtIndex。这是真的。 可能是您将其定义为NSMutableArray,但是以错误的方式初始化它? 你在哪里初始化数组,当前数组可能实际上是NSArray

,因为:

NSMutableArray *anArray = [[NSArray alloc] initWithObject:anObject];

是可能的,但是当您选择错误的选择器时会导致运行时错误。

答案 1 :(得分:2)

如果需要数组的可变副本,则需要使用-mutableCopy。使用-copy,即使在可变数组上,也会为您提供一个不可变数组。