• iOS :Object-C 语言merge两个字典对象


    Object-C 语言merge两个字典对象

    
    - (id)mutableDictionaryCopyIfNeeded:(id)dictObj
    {
        if ([dictObj isKindOfClass:[NSDictionary class]] &&
            ![dictObj isKindOfClass:[NSMutableDictionary class]]) {
            dictObj = [dictObj mutableCopy];
        }
        return dictObj;
    }
    
    /**
     合并两个字典
    
     @param dict 被合并的字典
     */
    - (void)mergingWithDictionary:(NSDictionary *)dict
    {
        for (id key in [dict allKeys]) {
            id obj = [self mutableDictionaryCopyIfNeeded:[dict objectForKey:key]];
            id localObj = [self mutableDictionaryCopyIfNeeded:[self objectForKey:key]];
            if ([obj isKindOfClass:[NSDictionary class]] &&
                [localObj isKindOfClass:[NSMutableDictionary class]]) {
                // Recursive merge for NSDictionary
                [localObj mergingWithDictionary:obj];
            } else if (obj) {
                [self setObject:obj forKey:key];
            }
        }
    }
    
    /**
     合并两个字典
    
     @param dict       被合并的字典
     @param ignoredKey 忽略的Key
     */
    - (void)mergingWithDictionary:(NSDictionary *)dict ignoredDictKey:(NSString *)ignoredKey
    {
        for (id key in [dict allKeys]) {
            if ([key isEqualToString:ignoredKey]) {
                continue;
            }
            id obj = [self mutableDictionaryCopyIfNeeded:[dict objectForKey:key]];
            id localObj = [self mutableDictionaryCopyIfNeeded:[self objectForKey:key]];
            if ([obj isKindOfClass:[NSDictionary class]] &&
                [localObj isKindOfClass:[NSMutableDictionary class]]) {
                // Recursive merge for NSDictionary
                [localObj mergingWithDictionary:obj];
            } else if (obj) {
                [self setObject:obj forKey:key];
            }
        }
    }
    
  • 相关阅读:
    62. Unique Paths
    102. Binary Tree Level Order Traversal
    3、公共接口不应该使用太过频繁,当有大量类型实现公共接口时,应当避免通过公共接口调用对象
    2、Task 使用 ContinueWith 而不要使用 Wait
    1、使用 as 而不要用 is
    VS 超级好用的 Ctrl E E
    一个好用的分组算法2
    java 字典 map 和 list.forEach
    mongo windows 安装
    mongo repository
  • 原文地址:https://www.cnblogs.com/ShaoYinling/p/5936421.html
Copyright © 2020-2023  润新知