获取两个NSDictionary项的互斥键

时间:2011-03-07 19:40:31

标签: iphone objective-c nsdictionary

我有两个不同的NSDictionary对象,其中有一些键属于两个集合,而有些键仅出现在第一个字典中,同样,在第二个字典中找不到几个键,但在第一个字典中找不到。

是否有一种有效的方法来进行集合比较以提取第一个字典中第二个不存在的密钥?

基本上,在标准的维恩图中,集合A的元素与集合B不相交。

2 个答案:

答案 0 :(得分:9)

NSSet正在寻找:

NSMutableSet *keysInA = [NSMutableSet setWithArray:[dictionaryA allKeys]];
NSSet *keysInB = [NSSet setWithArray:[dictionaryB allKeys]];
[keysInA minusSet:keysInB];
NSLog(@"keys in A that are not in B: %@", keysInA);

答案 1 :(得分:0)

NSCountedSet *dict1keys = [[NSCountedSet alloc] initWithArray:[dictionary1 allKeys]];
NSSet *dict2keys = [NSSet setWithArray:[dictionary2 allKeys]];
[dict1keys minusSet:dict2keys];
NSLog(@"Result : %@", dict1keys);