#import "NSDictionary+Merge.h" @implementation NSDictionary (Merge) + (NSDictionary *) dictionaryByMerging: (NSDictionary *) dict1 with: (NSDictionary *) dict2 { NSMutableDictionary * result = [dict1 mutableCopy]; [dict2 enumerateKeysAndObjectsUsingBlock: ^(id key, id obj, BOOL *stop) { if (![dict1 objectForKey:key]) { [result setObject: obj forKey: key]; } else if ([obj isKindOfClass:[NSDictionary class]]) { NSDictionary * newVal = [[dict1 objectForKey: key] dictionaryByMergingWith: (NSDictionary *) obj]; [result setObject: newVal forKey: key]; } }]; return (NSDictionary *) [NSDictionary dictionaryWithDictionary: result]; } - (NSDictionary *) dictionaryByMergingWith: (NSDictionary *) dict { return [[self class] dictionaryByMerging: self with: dict]; } @end