2017-02-09 1 views
0

Хотите объединить два NSDictionary или NSMutableDictionary только с dict1 значениями. как [NSMutableDictionary addEntriesFromDictionary:] и intersectSet (от NSMutableSet).Как IntersectSet из двух NSDictionary или NSMutableDictionary со значениями?

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

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

Моя ожидать выход после слияния = @ {@»One»: @»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 of 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. Я подумал о другом пути решения этого вопроса, используя метод по умолчанию. Нет других способов, как мы делаем для NSArray с помощью 'NSSet' ?. – user3589771

+0

Я думаю, что нет никакого способа сделать, как это @ user3589771 – raki

+0

@raki Вы могли бы сделать код более кратким, используя современный синтаксис доступа к словарю, используя '[]' – Paulw11