我可以将对象插入NSDictionary吗?

时间:2011-08-09 14:22:24

标签: iphone ios nsdictionary nsmutabledictionary

我从我们的网络服务器中提取坐标列表。我将整个列表存储为NSDictionary。当我使用数据(lat,long,radius,name)时,我想用1或2个字段更新数据列表。有没有办法将这2个项目插入现有字典?

我唯一想到的是,我必须将数据加载到NSMutableDictionary中以允许添加,只需创建新词典并用新更新的数据覆盖现有词典。希望有一种更简单或更清洁的方式而不是贫民窟。提前谢谢。

2 个答案:

答案 0 :(得分:3)

来自docs

  

NSDictionary类声明了对象的编程接口   管理 不可变 键和值的关联。

所以,NSDictionary是不可变的 - 你可能不会添加它。使用NSMutableDictionary不是不洁或“贫民窟”......这是NSMutableDictionary的全部目的。

答案 1 :(得分:1)

您的想法是正确的,您必须创建一个NSMutableDictionary,因为无法修改NSDictionary。

NSMutableDictionary *newDoc = [[NSMutableDictionary alloc] initWithDictionary:doc];

如果NSDictionary中有任何不可变数组或字典,则可能需要深层复制以进行修改。

NSMutableDictionary *newDoc = (NSMutableDictionary *)CFPropertyListCreateDeepCopy(kCFAllocatorDefault, doc, kCFPropertyListMutableContainers);