xcode - 正确使用 NSMutableDictionary
xcode - correct use of NSMutableDictionary
我在SecondView中定义了一个public属性
@property (weak, nonatomic) NSMutableDictionary * ToModify;
从 firseview,我使用 属性 将另一个字典传递给 dsecond view
secondView.ToModify =origin;
但是当我试图通过setObject方法修改ToModify的内容时,出现崩溃:
_NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
看起来ToModify是一个NSDictonary,实际上通过nslog class,它显示为NSDictonary。
为什么会发生?
编译器抱怨 origin
是不可变的 NSDictionary.
要使其可变,请调用 mutableCopy
secondView.ToModify = [origin mutableCopy];
将对象声明为 NSMutableDictionary 是不够的 - 您必须 实例化 它作为 NSMutableDictionary。你在哪里初始化ToModify
?
在 SecondView
的某个时候,您目前有
self.ToModify = [[NSDictionary alloc] init]; //or something similar
需要
self.ToModify = [NSMutableDictionary dictionary];
SecondView
究竟是什么,ToModify
的实际目的是什么?您是覆盖现有 属性 还是添加新的?
我在SecondView中定义了一个public属性
@property (weak, nonatomic) NSMutableDictionary * ToModify;
从 firseview,我使用 属性 将另一个字典传递给 dsecond view
secondView.ToModify =origin;
但是当我试图通过setObject方法修改ToModify的内容时,出现崩溃:
_NSCFDictionary setObject:forKey:]: mutating method sent to immutable object
看起来ToModify是一个NSDictonary,实际上通过nslog class,它显示为NSDictonary。
为什么会发生?
编译器抱怨 origin
是不可变的 NSDictionary.
要使其可变,请调用 mutableCopy
secondView.ToModify = [origin mutableCopy];
将对象声明为 NSMutableDictionary 是不够的 - 您必须 实例化 它作为 NSMutableDictionary。你在哪里初始化ToModify
?
在 SecondView
的某个时候,您目前有
self.ToModify = [[NSDictionary alloc] init]; //or something similar
需要
self.ToModify = [NSMutableDictionary dictionary];
SecondView
究竟是什么,ToModify
的实际目的是什么?您是覆盖现有 属性 还是添加新的?