25 lines
854 B
Objective-C
25 lines
854 B
Objective-C
#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
|