我在SecondView中定义了一个公共属性
@property (weak, nonatomic) NSMutableDictionary * ToModify;
从第一次看,我使用该属性将另一个二元组传递给第二视图
secondView.ToModify =origin;
但是当我尝试通过setObject方法修改ToModify的内容时,会出现崩溃:
_NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
似乎ToModify是一个NSDictonary,实际上是通过nslog类,它看起来像NSDictonary。
为什么会发生?
答案 0 :(得分:0)
编译器抱怨origin
是不可变的NSDictionary.
要使其变为可变,请致电mutableCopy
secondView.ToModify = [origin mutableCopy];
答案 1 :(得分:0)
将对象声明为NSMutableDictionary是不够的 - 您必须将其实例化为NSMutableDictionary。你在哪里初始化ToModify
?
在SecondView
的某个时刻,您目前有
self.ToModify = [[NSDictionary alloc] init]; //or something similar
需要
self.ToModify = [NSMutableDictionary dictionary];
实际上SecondView
是什么,以及ToModify
的实际目的是什么?您是否重写现有房产或添加新房产?