zoukankan      html  css  js  c++  java
  • 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];
            }
        }
    }
    
  • 相关阅读:
    9.20 kali中的Metasploit生成木马控制windows 以及http协议相关
    9.19 接上一篇,jss
    9.18 DNS服务安装
    9.17 ubuntu安装LAMP服务
    线程的安全问题
    java实现多线程(上)
    异常处理
    抽象方法和接口、内部类
    面向对象的一些关键字和方法
    Object类和包装类的一些方法
  • 原文地址:https://www.cnblogs.com/ShaoYinling/p/5936421.html
Copyright © 2011-2022 走看看