我有以下代码:

for (int i = 1; i <= [nmaSpread count];)
{
    [nmaUserName addObjectsFromArray:[nmaSpread objectAtIndex:i]];
    [nmaSpread removeObjectAtIndex:i];
    i += 2;
}

我已经声明所有变量为全局变量,nmaUserName和nmaSpread都是NSMutableArrays,并且已在viewDidLoad中分配。

我想将所有奇怪的对象从nmaSpread存储到nmaUsername中,然后删除nmaSpread中的活动对象。

但是,它始终因以下错误而崩溃:

[NSMutableArray addObjectsFromArray:]:数组参数不是NSArray 2011-12-11 21:08:55.123 appName [15671:f803] *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* -[NSMutableArray addObjectsFromArray:]:数组参数不是NSArray'

===============>>#1 票数:3

nmaSpread本身是一个NSMutableArray,但看起来它包含的对象不是 当您执行[nmaSpread objectAtIndex:i] ,它将从nmaSpread返回一个对象。 这个对象不是数组,因此要添加它,只需使用addObject:而不要使用addObject: addObjectsFromArray:

===============>>#2 票数:2

您的代码有一些问题。

首先,您已经错过了-addObjectsFromArray:功能。 您想要的实际方法只是addObject:

其次,在遍历数组时修改数组很危险。 苹果公司的官方说法是“这可能在某些情况下可行,但不要这样做,因为它将来可能会在任何时候停止工作”。 您需要等到完成循环遍历数组后,再删除它们。 您当前的代码肯定做错了。

您可以坐下来用笔/纸计算数学,以保持它们完整无缺,但是这样做更容易,更安全:

NSMutableIndexSet *indexesToRemove = [NSMutableIndexSet indexSet];

for (int i = 1; i <= [nmaSpread count];)
{
    [nmaUserName addObject:[nmaSpread objectAtIndex:i]];
    [indexesToRemove addIndex:i];
    i += 2;
}

[mmaSpread removeObjectsAtIndexes:indexesToRemove];

===============>>#3 票数:1

NSMutableArray的addObjectsFromArray希望您传递另一个数组,但是您传递的是单个对象(索引为“ i”的对象)

您可以尝试切换

[nmaUserName addObjectsFromArray:[nmaSpread objectAtIndex:i]];

[nmaUserName addObject:[nmaSpread objectAtIndex:i]];

这将消除您所看到的错误,但是您很可能会遇到另一个问题,因为您正在随行地从nmaSpread中删除对象,结果,数组后面的项的索引被移动了。 您可能应该改变逻辑以解决该问题。

  ask by Jake.Hoskins translate from so

未解决问题?本站智能推荐:

2回复

ObjectiveC-NSMutable数组特定的索引存储在另一个数组中

无论如何,我可以将NSMutableArray中的特定对象添加到目标c中的另一个数组吗? 我可以用Java完成此操作,但无法将其用于目标c 例如,我有一个由7个字符串组成的数组,我只希望将索引1、3、7存储在另一个数组中。
2回复

访问数组对象

我创建一个数组,并用对象对其进行初始化。 我试图访问数组对象,但得到一个(空)。 我做错了什么? 我尝试通过以下代码行访问其中一个对象(返回(空)): 更新:photoitem代码: 问题是什么? 谢谢!
4回复

创建一个包含浮点数的全局数组

我想创建2个全局数组,可以在程序运行期间更新。在每次更新时,我将一个元素添加到第0个位置并删除我创建数组的最后一个数字....在.h文件中... ....... ////////////// 在.m文件中 然后我习惯使用以下代码调用它们,重新,ove和添加元素.... 同
2回复

保存自定义对象数组的教程

是否有用于保存和还原自定义对象数组的教程?
3回复

替换,移动NSMutableArray中的对象

我有一个已经将容量设置为5的数组。我要做的是,当我添加一个对象并且容量超过5时,它将整个对象的整个数组结构移动一个。 例如1,2,3,4,5(数组)。 然后添加6时,它必须替换5并删除一个以得到2,3,4,5,6,依此类推。换句话说,它只需要保存最后5个对象。 但是,如实际编码中那样,它将
2回复

以可变数组访问我的注释

在我的应用程序中,我添加了一些注释。 我有一个带有共享实例的AnnotationController,所以我可以在所有类中访问我的注释。 我推添加注解在一个可变的阵列。 但是,我想将我的批注标题添加到tableView中,以便再次加载数组并访问通过“ initWithTitle”提供的
1回复

从数组调用元素并将其分配给变量?

有人可以告诉我如何从数组中调用元素并将其分配给变量吗? 在我的viewdidload中,我创建了一个随机数字数组。 在另一部分中,我想调用这些值。 例如 与countnumber和count是int。 问题是它无法识别结果数组。 错误是“使用未声明的标识符'结果'”有
1回复

访问数组的元素,Objective-C

我试图访问数组的元素并更改它们,例如我有一个带有数字和变量x的数组,我必须遍历该数组并将变量x替换为值。 我尝试了此操作,但是由于未捕获的异常“ NSRangeException”,在终止应用的for语句中出现错误,原因:“ ***-[__ NSArrayM objectAtIndex:]:索
4回复

目标C:创建和使用动态布尔数组的最佳方法是什么?

超过一个星期以来,我一直在努力尝试从动态布尔数组创建,访问和更新值的最佳方法。 这是初始化数组的方式: 这似乎工作正常,但我困惑为什么每个元素都用相同的地址初始化。 但是到目前为止,我在研究中发现的是,如果要更改其值,似乎需要替换该对象: 但是这种方法似乎过于复杂(
2回复

尝试将XML元素NSMutableString添加到NSMutableArray ..无法正常工作

我试图将特定名称的元素添加到NSMutableArray中,这是从XML文件获取的。 我在追求元素。 此处的第一个NSLog正确输出: 第二个NSLog正确输出: 第三个NSLog总是告诉我数组中的条目为零。 我没有在[_listOfGameNames addObject: