我需要动态地填充NSMutableDictionary与其他NSMutableDictionarys,因为他们被创建



我认为这样做的方法是创建主字典(称为mainDictionary),然后有另一个字典(称为tempDictionary),并在我得到它们时用值填充tempDictionary。然后,将tempDictionary作为一个值添加到主字典中。这是可行的,但随后我需要清除tempDictionary,以便再次填充它,然后将其作为另一个值添加到主字典中。问题是,当我清除tempDictionary时,它也会从主字典中删除那些值。下面是我的代码:

 NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc]init];
 [tempDictionary setObject:@"apple" forKey:@"myFruit"];
 [mainDictionary setObject:tempDictionary forKey:@"sample4"];
 [tempDictionary removeAllObjects];

所以显然我需要使用不同的方法,或者在清除tempDictionary之前以某种方式"保存"mainDictionary。tempDictionary需要动态更新,然后填充mainDictionary..有办法做到这一点吗?将有数百个"样本"需要添加,所以我不能只在运行时创建一堆tempDictionarys。

如果您希望临时字典的内容(添加到main中的)在从临时字典中删除所有对象时保持完整,您应该在将其添加到主字典之前复制它。

NSMutableDictionary *tempDictionary = [[NSMutableDictionary alloc] init];
[tempDictionary setObject:@"apple" forKey:@"myFruit"];
[mainDictionary setObject:[tempDictionary copy] forKey:@"sample4"];
[tempDictionary removeAllObjects];

另一种方法是重用tempDictionary,但要执行

tempDictionary = [NSMutableDictionary dictionary];

在每次开始一个新的集合时用相同的名字创建一个新的临时字典——这与

非常不同
[tempDictionary removeAllObjects];

最新更新