【发布时间】:2015-08-08 12:05:56
【问题描述】:
我遇到了两本词典的问题。在我的头文件中,我声明了一个字典:
@property (strong, nonatomic) NSMutableDictionary *templateDictionary
templateDictionary 保存字符串和字典,例如 'blankCopy',后者又保存其他字符串和字典。我还在我的实现文件中声明了一个字典:
@property (strong, nonatomic) NSMutableDictionary *exampleDictionary
在我的实现中,我试图将 exampleDictionary 的一部分设置为 templateDictionary 的一部分,如下所示:
[self.exampleDictionary setObject:[templateDictionary objectForKey:@"blankCopy"] forKey:@"template"];
这一直有效,直到我在 exampleDictionary 的“模板”中更改任何内容。现在,当我回到 templateDictionary 时,它也发生了变化。我想这是因为它指向回来。我尝试了以下但都没有任何效果:
[self.exampleDictionary setObject:[[templateDictionary objectForKey:@"blankCopy"] copy] forKey:@"template"];
[self.exampleDictionary setObject:[[templateDictionary objectForKey:@"blankCopy"] mutableCopy] forKey:@"template"];
[self.exampleDictionary setObject:[NSMutableDictionary dictionaryWithDictionary:[templateDictionary objectForKey:@"blankCopy"]] forKey:@"template"];
关于什么是错的以及如何修复它,或者如何按值复制字典对象的任何想法?
【问题讨论】:
-
我猜你将
self.exampleDictionary设置为在重新打开视图时始终调用的方法。 (viewwillappear 之类的)也许你应该在设置之前检查字典是否为空。 -
@LoVo 我在需要新模板时设置了 exampleDictionary,即“blankCopy”的一个版本,除了更新 exampleDictionary 总是以“blankCopy”不为空白结束!
-
[templateDictionary objectForKey:@"blankCopy"]的对象数据类型是什么? -
@iphonic 是 JSON 序列化创建的字典
-
字典包含 POINTERS。如果将指针从一个字典复制到另一个字典,则不会创建指向对象的副本。
标签: ios objective-c xcode dictionary nsdictionary