繁体   English   中英

从NSMutableDictionary中删除对象

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM