From 67fcd2bb276b482aa1cdc31f60a5ccd499022052 Mon Sep 17 00:00:00 2001 From: Christopher Snowhill Date: Mon, 14 Feb 2022 19:55:20 -0800 Subject: [PATCH] NSDictionary+Merge: Support overwriting empty Support overwriting empty fields of NSNumber or NSString form with values from the merging dictionary. Correctly overwrite the value from the first dictionary with values from the second if the first contains empty strings or zeroed numbers. Signed-off-by: Christopher Snowhill --- Utils/NSDictionary+Merge.m | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Utils/NSDictionary+Merge.m b/Utils/NSDictionary+Merge.m index e77a343e1..6769e28a7 100644 --- a/Utils/NSDictionary+Merge.m +++ b/Utils/NSDictionary+Merge.m @@ -11,6 +11,19 @@ } else if([obj isKindOfClass:[NSDictionary class]]) { NSDictionary *newVal = [[dict1 objectForKey:key] dictionaryByMergingWith:(NSDictionary *)obj]; [result setObject:newVal forKey:key]; + } else { + BOOL isEmpty = NO; + id objTarget = [dict1 objectForKey:key]; + if([objTarget isKindOfClass:[NSString class]]) { + NSString *val = (NSString *)objTarget; + isEmpty = [val length] == 0; + } else if([objTarget isKindOfClass:[NSNumber class]]) { + NSNumber *val = (NSNumber *)objTarget; + isEmpty = [val isEqualTo:@(0)]; + } + if(isEmpty) { + [result setObject:obj forKey:key]; + } } }];