我从我们的网络服务器中提取坐标列表。我将整个列表存储为NSDictionary。当我使用数据(lat,long,radius,name)时,我想用1或2个字段更新数据列表。有没有办法将这2个项目插入现有字典?
我唯一想到的是,我必须将数据加载到NSMutableDictionary中以允许添加,只需创建新词典并用新更新的数据覆盖现有词典。希望有一种更简单或更清洁的方式而不是贫民窟。提前谢谢。
答案 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);