[__NSArrayI replaceObjectAtIndex:withObject:]:发送到实例的无法识别的选择器

时间:2013-01-17 02:10:43

标签: objective-c cocoa nsmutablearray

我有一个NSMutableArray,我需要机会它的值,但我有这个错误:
[__ NSArrayI replaceObjectAtIndex:withObject:]:无法识别的选择器发送到实例0x5291db0
这是我的NSMutableArray的声明:

NSMutableArray *selectedOptions = [NSArray arrayWithObjects:[NSNumber numberWithInteger:0], nil]; 

然后,我用这种方式使用replaceObjectAtIndex方法:

[self.selectedOptions replaceObjectAtIndex:0 withObject:[NSNumber numberWithInteger:1]];

但是我知道,那个错误,我正在使用NSMutableArray 感谢

2 个答案:

答案 0 :(得分:9)

您正在创建一个常规的非变异NSArray。你的代码应该是

NSMutableArray *selectedOptions = [NSMutableArray arrayWithObjects:[NSNumber numberWithInteger:0], nil]; 

目标C是非常动态的,所以它在编译时没有发现这个错误。

答案 1 :(得分:6)

您需要通过

初始化NSMutableArray
NSMutableArray *selectedOptions = [NSMutableArray alloc] init];

通过NSArray初始化,您无法再使用repalceObjectAtIndex:withObject:方法,这就是问题的原因。

使用上面的行初始化NSMutableArray后,只需使用addObject方法向其添加对象。