牛逼之处:
数组里面可以有字典,字典里面还能有数组. 此类可以将数据从外层到最里层全部转变为可变类型. 方便对数据的操作.亲测可用.方便
直接将下面的.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
网友评论