我有一个名为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数组中删除Patient Objects,但问题在于使用键@“A”从tableData数组中删除相同的Patient Objects。我的问题是为什么还要从tableData字典中删除Patient Objects?我该如何防止这种情况?
我一定做错了什么,但这让我感到困惑,因为如果我尝试简单地从filteredPatients中删除密钥@“A”,它的工作完全正常,只能从我想要的字典中删除密钥。
[self.filteredPatients removeObjectForKey:@"A"];
答案 0 :(得分:2)
我认为您的问题是您期望深层复制行为,但您没有要求深层复制。字典是不同的对象,但两个字典中任何给定键的值都指向相同的可变数组。您可以使用initWithDictionary:self.tableData copyItems:YES
代替,但是您需要考虑复制的内容和不复制的内容。我没有足够的信息来帮助你。