繁体   English   中英

替换可变数组中的对象

[英]replace object in mutable array

这应该很容易,可能我只是想念一件事:我有一个名为defaultImages的图像数组

NSMutableArray *defaultLetters;

然后添加所需的字母(数组长度为42)

稍后,我尝试用另一个图像替换数组中的一个图像。 像这样:

[defaultLetters replaceObjectAtIndex:0 withObject:croppedPhoto];

但我收到一条错误消息:“-[__ NSArrayI replaceObjectAtIndex:withObject:]:无法识别的选择器已发送到实例0x180ae190”,我是否缺少步骤?

您将NSArray对象分配给defaultLetters ,而不是NSMutableArray

__NSArrayI是NSArray的私有子类。 I代表一成不变。

请参阅什么是__NSArrayI和__NSArrayM? 如何转换为NSArray?


如果您不能确定到底是分配的NSArray还是NSM​​utableArray,则可以随时进行测试。

if(![defaultLetters respondsToSelector:@selector(replaceObjectAtIndex:withObject:)]){
    defaultLetters = [defaultLetters mutableCopy];
}

但这可能表明代码中存在体系结构问题,因为您应该确定要处理的对象。

我想你这样分配价值

defaultLetters = anotherMutableArray;

如果您这样做,请按照以下说明进行更换。

defaultLetters = [anotherMutableArray mutableCopy];

您可以替换该数组中的对象

[defaultLetters replaceObjectAtIndex:0 withObject:croppedPhoto];

尝试一下。由于直接分配,您无法插入或删除。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM