1

我想我已经陷入了一种困惑的状态,我在做一些根本错误的事情,但我无法理解这是什么以及为什么会发生这种情况。

图 1:My 类的属性。一个 NSMutableArray。

财产

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

代码

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

控制台声明

现在,我在这里,认为这将是一件容易的事。从那以后,我已经在我的源代码中的其他 NSMutableArrays 的索引中删除并替换了对象。图4来了: 堆栈跟踪

我相信这告诉我 NSMutableArray 没有响应 removeObjectAtIndex。

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

不,这不是家庭作业……即使有人可以相信。我愿意。


编辑:在解析进入 dagArray 的对象时出错。

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

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

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

4

2 回答 2

2

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

于 2012-11-12T11:39:58.777 回答
2

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

因为:

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

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

于 2012-11-12T10:43:01.000 回答