[英]Removing Objects from NSMutableDictionary
我有一个名为tableData的NSDictionary,其中包含键@“ A”-@“ Z”,并且每个键的值都包含一个包含Patient对象的数组。
然后,我创建一个名为filteredPatients的NSMutableDictionary,并使用tableData字典对其进行初始化。
在此示例中,我尝试从键为@“ A”的数组中删除所有Patient对象。
@property (nonatomic, strong) NSDictionary *tableData;
@property (nonatomic, strong) NSMutableDictionary *filteredPatients;
self.filteredPatients = [[NSMutableDictionary alloc]initWithDictionary:self.tableData];
NSMutableArray *patientArray = [self.filteredPatients objectForKey:@"A"];
int count = patientArray.count - 1;
for (int i = count; i >= 0; i--)
{
[patientArray removeObjectAtIndex:i];
}
在这种情况下,将正确地从键为“ A”的filteredPatients数组中删除患者对象,但是问题在于,从键为“ A”的tableData数组中将删除相同的患者对象。 我的问题是为什么还要从tableData词典中删除“患者对象”? 我该如何预防?
我必须做错了什么,但这使我感到困惑,因为如果我尝试从filterPatients中简单地删除键@“ A”,它就可以很好地工作,并且只从我想要的字典中删除键。
[self.filteredPatients removeObjectForKey:@"A"];
我认为您的问题是您期望深层复制行为,但是您没有要求深层复制。 字典是不同的对象,但是两个字典中任何给定键的值都指向相同的可变数组 。 您可以改用initWithDictionary:self.tableData copyItems:YES
,但是您将需要仔细考虑要复制的内容和不复制的内容。 我没有足够的信息来帮助您。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.