我正在尝试将值更改为可变数组的特定键:
NSMutableArray* reversed = [NSMutableArray arrayWithArray:regions];
[reversed setValue:@"current" forKey:@"region"];
但是这导致了一个未被捕获的例外:
*由于未捕获的异常而终止应用 ' NSInternalInconsistencyException',原因:' - [__ NSCFDictionary setObject:forKey:]:发送到不可变对象的变异方法' * 首先抛出调用堆栈:
为什么告诉我我的NSMutableArray是一个不可变对象?
答案 0 :(得分:2)
setValue:forKey:
是documented to do the following:
setValue:forKey:
使用指定的值和键在每个数组的项上调用setValue:forKey:
强调我的。你的NSMutableArray
是可变的,但其中一个项目是不可变的。
答案 1 :(得分:1)
您是否在该错误消息中看到任何提及NSMutableArray
的内容?不。它提到了__NSCFDictionary
,这是一个NSDictionary
运行时类。
您对setValue:forKey:
的呼叫将被转发到此阵列中的所有对象。这些对象中至少有一个是不可变的NSDictionary
,它会抛出此异常。