如何将两个 NSDictionary 或 NSMutableDictionary 与值相交



只想合并两个NSDictionaryNSMutableDictionaryNSMutableSet intersectSet [NSMutableDictionary addEntriesFromDictionary:]只有dict1值。

 Dict 1 = @{@”One”: @””, @”Two”: @”"}
 Dict 2 = @{@”One”: @”1”, @”Two”: 2, @”Three”: @”3"}

合并后的预期输出 = @{@"一": @"1", @"二": @"2"}

更新

我已经尝试过[Dict1 addEntriesFromDictionary:Dict2]这个给出答案@{@”One”: @”1”, @”Two”: 2, @”Three”: @”3"}

我也尝试过NSMutableSet

NSMutableSet *keysInA = [NSMutableSet setWithArray:tempDict.allKeys];
NSSet *keysInB = [NSSet setWithArray:tempDict1.allKeys];
[keysInA intersectSet:keysInB];
NSLog(@"keys in A that are not in B: %@", keysInA);

这个给出输出One, Two, Three.

所以[NSMutableSet setWithArray:][NSMutableDictionary addEntriesFromDictionary:]不会给出我所期望的。

如果上面的代码有任何工作,请清除我。谢谢。

NSDictionary *dict1 = @{@"One": @"", @"Two": @"6"};
NSDictionary *dict2 = @{@"One": @"1", @"Two": @"2", @"Three": @"3"};
NSDictionary * dict = [dict2 dictionaryWithValuesForKeys:[dict1 allKeys]];
NSLog(@"dict %@",dict);
// Log value
dict {
One = 1;
Two = 2;
}

这是我所期望的。

试试这个...

//Assuming both dictionaries have same kind of keys
NSMutableDictionary *dict1 = @{@"One" : @"", @"Two": @"", @"Three" : @""}.mutableCopy;
NSDictionary *dict2 = @{@"One" : @"1", @"Two": @"2", @"Three" : @"3",@"Four":@"4"};
for (NSString *key in dict1.allKeys)
{
    if (dict2[key])
    {
        dict1[key] = dict2[key];
    }
}
NSLog(@"Updated dict %@",dict1);

最新更新