2015-10-27 26 views
-1

我想知道是否可以将值设置为字典中的字典。字典作为值 - 用当前值覆盖NSMutableDictionary的所有其他值

我想将值设置为字典,但是当我为当前键设置值时,所有以前的键也会使用此值设置。

[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" 
     ); 
    }; 
} 

词典应该能够接受任何形式的价值正确?我怀疑问题是其他问题

+0

不,“NSDictionary”不接受任何值。 _Keys_必须符合'NSCopying'协议([documentation](https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSMutableDictionary_Class/index.html#//apple_ref/occ/) instm/NSMutableDictionary/setObject:forKey :)) – Arc676

+0

你可以与字典值分享你的代码吗? – Vijay

+0

@vijay:输出中的值? – Masood

回答

2

据我所知,你正在为不同的键设置self.buttonDict的值。 存储该密钥的self.buttonDict的引用。

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

尝试为self.buttonDict制作单独的对象,然后在Dictionary中为该对象设置该对象的setValue。

+0

您也可以将该值设置为'[self.buttonDict copy]'。 –

+0

是的,这可能是另一种方法。 :) –

+0

谢谢,那是一个救世主! – Masood