-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathNSMutableDictionary+Overwriter.m
executable file
·44 lines (34 loc) · 1.58 KB
/
NSMutableDictionary+Overwriter.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
//
// NSMutableDictionary+Overwriter.m
#import "NSMutableDictionary+Overwriter.h"
@implementation NSMutableDictionary (Overwriter)
-(void)overwriteWithDictionary:(NSDictionary*)dict
{
for(NSString *key in dict.allKeys)
{
id selfObject = self[key];
id overwriterObject = dict[key];
if([selfObject isKindOfClass:[NSNull class]] && ![overwriterObject isKindOfClass:[NSNull class]])
{
}
bool selfObjectIsNullOrZeroLengthString = !selfObject || [selfObject isKindOfClass:[NSNull class]] || ([selfObject isKindOfClass:[NSString class]] && [(NSString*)selfObject length]);
bool overWriterObjectIsNotNull = overwriterObject && ![overwriterObject isKindOfClass:[NSNull class]];
if (selfObjectIsNullOrZeroLengthString && overWriterObjectIsNotNull) {
if([overwriterObject isKindOfClass:[NSNumber class]]
)
{
double n = [(NSNumber*) overwriterObject doubleValue];
self[key] = @(n);
}
else self[key] = [overwriterObject mutableCopy];
}
else if([selfObject isKindOfClass:[NSDictionary class]] && [overwriterObject isKindOfClass:[NSDictionary class]])
{
NSMutableDictionary *selfDict = (NSMutableDictionary*)[selfObject mutableCopy];
NSMutableDictionary *overwriterDict = (NSMutableDictionary*)[overwriterObject mutableCopy];
[selfDict overwriteWithDictionary:overwriterDict];
self[key] = selfDict;
}
}
}
@end