后端返回的数据中总会出现一些NSNull类型,当我们一处理程序就会崩溃,因此想到把返回的数据中的NSNull类型全部转换成@""空字符串。下面是转化方法:
1 新建一个NSObject类 自定义如下几个方法
#pragma mark - 公有方法
//类型识别:将所有的NSNull类型转化成@""
+(id)changeType:(id)myObj {
if ([myObj isKindOfClass:[NSDictionary class]]) return [self nullDic:myObj];
else if([myObj isKindOfClass:[NSArray class]]) return [self nullArr:myObj];
else if([myObj isKindOfClass:[NSString class]]) return [self stringToString:myObj];
else if([myObj isKindOfClass:[NSNull class]]) return [self nullToString];
else return myObj;
}
#pragma mark - 私有方法
//将NSDictionary中的Null类型的项目转化成@""
+(NSDictionary *)nullDic:(NSDictionary *)myDic {
NSMutableDictionary *resDic = [[NSMutableDictionary alloc]init];
[myDic enumerateKeysAndObjectsUsingBlock:^(id _Nonnull key, id _Nonnull obj, BOOL * _Nonnull stop) {
id Obj = [self changeType:obj];
[resDic setObject:Obj forKey:key];
}];
return resDic;
}
//将NSArray中的Null类型的项目转化成@""
+(NSArray *)nullArr:(NSArray *)myArr {
NSMutableArray *resArr = [[NSMutableArray alloc] init];
[myArr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
id Obj = [self changeType:obj];
[resArr addObject:Obj];
}];
return resArr;
}
//将NSString类型的原路返回
+(NSString *)stringToString:(NSString *)string{
return string;
}
//将Null类型的项目转化成@""
+(NSString *)nullToString {
return @"";
}
2 将服务器返回的数据先进行解析得到字典或者数组(我这边是得到数组),将得到的数组在放进自定义类中进行转换
NSArray *arrayCopy =[ChangeTypeTool changeType:array];
3 输出结果比较,上面的是转换前的,下面的是转换后的
对比可以发现,已经将NSNull 类型的数据都转换成了@"".