gpt4 book ai didi

iphone - iOS - 删除存储在主 NSDictionary 中的所有 NSDictionaries 上包含键的所有条目

转载 作者:可可西里 更新时间:2023-11-01 05:46:41 25 4
gpt4 key购买 nike

我有一个主 NSMutableDictionary,其中包含其他 NSMutableDictionary 的集合。

事情是这样的:

NSMutableDictionary *subDict1 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
obj1, @"name",
obj2, @"color",
nil];

NSMutableDictionary *subDict2 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
obj3, @"name",
obj4, @"color",
obj5, @"address",
obj6, @"phone",
obj7, @"color",
obj8, @"parent",
nil];

NSMutableDictionary *subDict3 = [NSMutableDictionary dictionaryWithObjectsAndKeys:
obj0, @"name",
obj9, @"parent",
objA, @"site",
objB, @"surname",
objC, @"label",
nil];

这些子词典可能有不同数量的条目,并且关键字可能不同。有些 key 可能具有相同的名称。

它们像这样存储在主字典中:

NSMutableDictionary *mainDict = [NSMutableDictionary dictionaryWithObjectsAndKeys:
subDict1, @"1",
subDict3, @"3",
subDict2, @"2",
nil];

我想一次性删除所有子词典中具有特定键的所有条目。

我知道我可以遍历字典和子字典,但我也知道字典有使用谓词和其他东西来做这件事的聪明方法,但我不知道怎么做。我试图找到它,因为这将运行的方法有点棘手,必须尽快完成,我不确定带循环的正常迭代或其他任何东西是否足够快......

有什么线索吗?谢谢。

最佳答案

这是一个递归方法,它不关心目标键有多深。 (没试过)...

- (void)removeKey:(NSString *)keyToRemove fromDictionary:(NSMutableDictionary *)dictionary {

NSArray *keys = [dictionary allKeys];

if ([keys containsObject:keyToRemove]) {
[dictionary removeObjectForKey:keyToRemove];
} else {
for (NSString *key in keys) {
id value = [dictionary valueForKey:key];
if ([value isKindOfClass:[NSMutableDictionary self]]) {
[self removeKey:keyToRemove fromDictionary:(NSMutableDictionary *)value];
}
}
}
}

关于iphone - iOS - 删除存储在主 NSDictionary 中的所有 NSDictionaries 上包含键的所有条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11068842/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com