好。我一直在尝试组织这个nsmutable数组,所以我的程序可以按照我想要的方式使用它。
我从一个标准的NSMutable数组开始,然后使用addobject:方法填充它,然后用更多的NSMutableArrays填充它(所以数组中的数组)。因此,我需要调用ObjectAtIndex:方法以及replaceObjectAtIndex:withObject:方法。另外因为你只能将类型ID的广告对象转换为NSMutableArrays(至少我认为)我必须将所有双变量转换为NSNumbers,然后再转换为双倍数学,然后再返回NSNumbers再次存储...效率很低。
但主要问题是(之前的事情只是我很好奇的东西),这段代码:
NSMutableArray * array = [tmp objectAtIndex x];
[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]];
Xcode表示问题出现在第二行,我刚刚在上下文中添加了一些内容。结果是NSNumber,tmp也是NSMutableArray。 Xcode表示错误是“将'Void'发送到不兼容类型'id'的参数”。
我真的很感激任何帮助:)。谢谢!
答案 0 :(得分:3)
让我们分解[tmp replaceObjectAtIndex:x withObject: [array replaceObjectAtIndex:2 withObject: result]];
行。
当你看到这样的问题并且你有一堆嵌套方法时,从最深的方法调用开始并移出,检查文档以查看每个方法返回的内容。在这种情况下,答案很简单,但这总是很好的做法:
-[NSMutableArrray replaceObjectAtIndex:withObject:]
会返回void
,因此:
[tmp replaceObjectAtIndex:x withObject: void]
,因此将void
作为Xcode应该正确抱怨的replaceObjectAtIndex:withObject:
中的第二个参数传递。
答案 1 :(得分:1)
replaceObjectAtIndex的返回类型为void,这就是您收到该错误的原因。你的意图是添加数组,但你只是添加整个表达式的结果,这是无效的。您需要将replaceObjectAtIndex方法作为单独的行,然后使用array作为对象参数。