大佬教程收集整理的这篇文章主要介绍了ios – 如何遍历NSDictionaries和NSArrays的嵌套层次结构并将所有转换为可变副本?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
如何从上到下遍历整个层次结构,并将NSDictionaries和NSArrays的所有实例分别转换为NSMutableDictionaries和NSMutableArrays?
是否有任何简单的“递归制作可变副本”功能我不知道?如果没有,我只需要反复循环和打字检查吗?我可以随时更换,还是重建整个层次结构?
@interface NSObject (MyDeepCopy) -(id)deepMutableCopy; @end @implementation NSObject (MyDeepCopy) -(id)deepMutableCopy { if ([self isKindOfClass:[NSArray class]]) { NSArray *oldArray = (NSArray *)self; NSMutableArray *newArray = [NSMutableArray array]; for (id obj in oldArray) { [newArray addObject:[obj deepMutableCopy]]; } return newArray; } else if ([self isKindOfClass:[NSDictionary class]]) { NSDictionary *oldDict = (NSDictionary *)self; NSMutableDictionary *newDict = [NSMutableDictionary Dictionary]; for (id obj in oldDict) { [newDict setObject:[oldDict[obj] deepMutableCopy] forKey:obj]; } return newDict; } else if ([self isKindOfClass:[NSSet class]]) { NSSet *oldSet = (NSSet *)self; NSMutableSet *newSet = [NSMutableSet set]; for (id obj in oldSet) { [newSet addObject:[obj deepMutableCopy]]; } return newSet; #if MAKE_MUTABLE_COPIES_OF_NONCOLLECTION_OBjeCTS } else if ([self conformsToProtocol:@protocol(NSMutableCopying)]) { // e.g. NSString return [self mutableCopy]; } else if ([self conformsToProtocol:@protocol(NSCopying)]) { // e.g. NSnumber return [self copy]; #endif } else { return self; } } @end
用它就好
NSDictionary *Dict = ...; NSMutableDictionary *mDict = [Dict deepMutableCopy];
(不复制字典键,只复制值).
我很确定我在SO上看过这样的东西,但现在找不到它.
以上是大佬教程为你收集整理的ios – 如何遍历NSDictionaries和NSArrays的嵌套层次结构并将所有转换为可变副本?全部内容,希望文章能够帮你解决ios – 如何遍历NSDictionaries和NSArrays的嵌套层次结构并将所有转换为可变副本?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。