Dictionary as value - 用当前值覆盖NSMutableDictionary的所有其他先前值

时间:2015-10-27 12:49:55

标签: ios objective-c nsdictionary

我想知道我们是否可以将值设置为字典的字典。

我正在尝试将值设置为字典,但是当我为当前键设置值时,所有以前的键也会设置为此值。

[self.mainDict setValue:self.buttonDict forKey:[NSString stringWithFormat:@"%d",device.deviceID]];

这是我在两次迭代中得到的结果:

第一

main Dict {
    2 =     {
        1 =         (
            "object1",
            "object2"
        );
    };
}

第二

main Dict {
    2 =     {
        1 =         (
            "object3",
            "object4"
        );
    };
    3 =     {
        1 =         (
            "object3",
            "object4"
        );
    };
}

词典应该能够接受任何一种价值吗?我怀疑问题是别的什么

1 个答案:

答案 0 :(得分:2)

据我所知,你为不同的键设置了self.buttonDict的值。 它存储了该键的self.buttonDict引用。

更改self.buttonDict值时,将更新指向该对象的所有指针。这就是为什么更改单个对象会改变所有值。

尝试为self.buttonDict创建一个单独的对象,然后使用该对象为Dictionary中的键创建setValue。