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 的实际目的是什么?您是覆盖现有 属性 还是添加新的?