xcode - 正确使用NSMutableDictionary

时间:2016-01-31 20:04:35

标签: ios nsmutabledictionary

我在SecondView中定义了一个公共属性

@property (weak, nonatomic)  NSMutableDictionary * ToModify;

从第一次看,我使用该属性将另一个二元组传递给第二视图

secondView.ToModify =origin;

但是当我尝试通过setObject方法修改ToModify的内容时,会出现崩溃:

_NSCFDictionary setObject:forKey:]: mutating method sent to immutable object

似乎ToModify是一个NSDictonary,实际上是通过nslog类,它看起来像NSDictonary。

为什么会发生?

2 个答案:

答案 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的实际目的是什么?您是否重写现有房产或添加新房产?