2017-02-09 45 views
0

想要合併兩個NSDictionaryNSMutableDictionary只與dict1值。如[NSMutableDictionary addEntriesFromDictionary:]intersectSet(來自NSMutableSet)。如何使兩個NSDictionary或NSMutableDictionary與值相交?

Dict 1 = @{@」One」: @」」, @」Two」: @」"} 

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

我期待合併後的輸出= @ {@」一」:@」 1」 ,@」二」:@」 2" }

UPDATE

我已經嘗試過與此[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:]不會給我所期望的。

如果上面的代碼有任何工作讓我清楚。謝謝。

+0

使用NSSet instate的NSDictionary –

+0

@ Md.MuzahidulIslam我不想Dict2值。但'addEntriesFromDictionary'合併兩個dictvalue。我不認爲這是我的答案。如果我錯過了那個點上的任何事情。 – user3589771

+0

@AbhishekGupta你可以用代碼來詳細說明嗎?我無法理解這一點。因爲我已經提到了這個問題'NSMutableSet'。 – user3589771

回答

2
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; 
} 

這裏我所期待的。

0

試試這個...

//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); 
+0

謝謝@raki。我想通過其他方式解決這個問題,使用默認方法。有沒有其他的方法,像我們用'NSSet'來做'NSArray'? – user3589771

+0

我認爲沒有辦法像這樣@ user3589771 – raki

+0

@raki你可以通過使用現代字典訪問語法來使代碼更加簡潔[]' – Paulw11

相關問題