最近我使用NSTextTable绘制表。我想要更改所选块的某些属性,因此将所选段落保存到字典中。复制段落后,一旦调用方法[NSTextTableBlock setBorderColor:],引发错误:
-[__NSArrayI replaceObjectAtIndex:withObject:]: unrecognized selector sent to instance 0x6000002442c0
我尝试了很多次,终于发现了一个现象,如果我不复制块,setBorderColor:没关系。
任何人都知道[NSTextTableBlock copy]与此错误的关系,为什么[NSTextTableBlock setBorderColor:]会导致此错误?我对这个错误感到很困惑。提前谢谢。
答案 0 :(得分:4)
NSArray
没有选择器replaceObjectAtIndex:withObject:
(因此您无法调用它)。您实际上是在尝试修改无法修改的NSArray
。您可能需要NSMutableArray
。您可以从NSMutableArray
创建NSArray
,调用您的方法,然后将您对原始数组的引用替换为:
NSMutableArray *mutableArray = [NSMutableArray arrayWithArray:array];
[mutableArray replaceObjectAtIndex:index withObject:object];
array = mutableArray;//now the array has been "updated"