美文网首页
iOS 实用类 将嵌套的NSArray数组或者NSDiction

iOS 实用类 将嵌套的NSArray数组或者NSDiction

作者: iOS刘耀宗 | 来源:发表于2020-04-15 11:05 被阅读0次

牛逼之处:
数组里面可以有字典,字典里面还能有数组. 此类可以将数据从外层到最里层全部转变为可变类型. 方便对数据的操作.亲测可用.方便
直接将下面的.h 和.m 文件复制生成类即可

//
//  MutableCopyCatetory.h
//  Eschool_student
//
//  Created by 刘耀宗 on 2019/7/25.
//  Copyright © 2019年 李泽平. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface MutableCopyCatetory : NSObject

@end

@interface NSArray (Catetory)
-(NSMutableArray *)mutableArrayDeeoCopy;
@end
@interface NSDictionary (Catetory)
-(NSMutableDictionary *)mutableDicDeepCopy;
@end
NS_ASSUME_NONNULL_END



//
//  MutableCopyCatetory.m
//  Eschool_student
//
//  Created by 刘耀宗 on 2019/7/25.
//  Copyright © 2019年 李泽平. All rights reserved.
//

#import "MutableCopyCatetory.h"

@implementation MutableCopyCatetory

@end
@implementation NSArray (Catetory)

-(NSMutableArray *)mutableArrayDeeoCopy{
    
    NSMutableArray * array = [NSMutableArray array];
    [self enumerateObjectsUsingBlock:^(id  _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
        
        id objOject;
        
        if ([obj isKindOfClass:[NSDictionary class]]) {
            objOject = [obj mutableDicDeepCopy];
            
        }else if ([obj isKindOfClass:[NSArray class]]){
            
            objOject = [obj mutableArrayDeeoCopy];
            
        }else{
            
            objOject = obj;
        }
        [array addObject:objOject];
        
    }];
    
    return array;
}

@end
@implementation NSDictionary (Catetory)
-(NSMutableDictionary *)mutableDicDeepCopy{
    
    NSMutableDictionary *dict=[[NSMutableDictionary alloc] initWithCapacity:[self count]];
    
    NSArray *keys=[self allKeys];
    for(id key in keys)
    {
        //循环读取复制每一个元素
        id value=[self objectForKey:key];
        id copyValue;
        
        // 如果是字典,递归调用
        if ([value isKindOfClass:[NSDictionary class]]) {
            
            copyValue=[value mutableDicDeepCopy];
            
            //如果是数组,数组数组深拷贝
        }else if([value isKindOfClass:[NSArray class]])
            
        {
            copyValue=[value mutableArrayDeeoCopy];
        }else{
            
            copyValue = value;
        }
        
        [dict setObject:copyValue forKey:key];
        
    }
    return dict;
    
}

@end


相关文章

网友评论

      本文标题:iOS 实用类 将嵌套的NSArray数组或者NSDiction

      本文链接:https://www.haomeiwen.com/subject/clwqvhtx.html