请求接口获取到的数据其中出现null值,处理的时候导致了程序crash,解决方案如下:...
第一種方法是使用分類(lèi)給字典添加一個(gè)類(lèi)方法,將字典中的null值全部替換為空字符串,代碼如下:
.h文件代碼:
@interface NSDictionary (DeleteNull)
+ (id)changeType:(id)myObj;
?@end
?
.m文件代碼:
@implementation NSDictionary (DeleteNull)
?//將NSDictionary中的Null類(lèi)型的項(xiàng)目轉(zhuǎn)化成@""
+(NSDictionary *)nullDic:(NSDictionary *)myDic
{
? ? NSArray *keyArr = [myDic allKeys];
? ? NSMutableDictionary *resDic = [[NSMutableDictionary alloc]init];
? ? for (int i = 0; i < keyArr.count; i ++)
? ? {
? ? ? ? id obj = [myDic objectForKey:keyArr[i]];
?
? ? ? ? obj = [self changeType:obj];
?
? ? ? ? [resDic setObject:obj forKey:keyArr[i]];
? ? }
? ? return resDic;
}
?
//將NSArray中的Null類(lèi)型的項(xiàng)目轉(zhuǎn)化成@""
+(NSArray *)nullArr:(NSArray *)myArr
{
? ? NSMutableArray *resArr = [[NSMutableArray alloc] init];
? ? for (int i = 0; i < myArr.count; i ++)
? ? {
? ? ? ? id obj = myArr[i];
?
? ? ? ? obj = [self changeType:obj];
?
? ? ? ? [resArr addObject:obj];
? ? }
? ? return resArr;
}
?
//將NSString類(lèi)型的原路返回
+(NSString *)stringToString:(NSString *)string
{
? ? return string;
}
?
//將Null類(lèi)型的項(xiàng)目轉(zhuǎn)化成@""
+(NSString *)nullToString
{
? ? return @"";
}
?#pragma mark - 公有方法
//類(lèi)型識(shí)別:將所有的NSNull類(lèi)型轉(zhuǎn)化成@""
+(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;
? ? }
}
?
使用方法:
[model?setValuesForKeysWithDictionary:[NSDictionary?changeType:dict]]; ?
?
第二種方法是利用AFNetworking的自動(dòng)解析,去除掉值為null的鍵值對(duì),我挺推崇這種方案的,但還要看個(gè)人喜好,裝逼一點(diǎn)的就用拓展(個(gè)人不推薦)代碼如下:
AFHTTPRequestOperationManager?*manager?=?[AFHTTPRequestOperationManager?manager]; ?
AFJSONResponseSerializer?*response?=?[AFJSONResponseSerializer?serializer]; ?
response.removesKeysWithNullValues?=?YES;??
manager.responseSerializer?=?response;??
manager.requestSerializer?=?[AFJSONRequestSerializer?serializer]; ?
?
轉(zhuǎn)載于:https://www.cnblogs.com/IceBlack-Tea-developer/p/5665685.html
總結(jié)
以上是生活随笔為你收集整理的请求接口获取到的数据其中出现null值,处理的时候导致了程序crash,解决方案如下:...的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
                            
                        - 上一篇: C++ 类模板四(typename关键字
 - 下一篇: 图-最短路径