iOS_網(wǎng)絡(luò)請(qǐng)求到的數(shù)據(jù)的null值處理&&有問(wèn)題

請(qǐng)求接口獲取到的數(shù)據(jù)包涵null值,處理的時(shí)候遇到了問(wèn)題。

在網(wǎng)上搜到了幾種解決辦法,自己嘗試了兩種都可以達(dá)到目的,在這里記錄一下。

第一種方法是使用分類(lèi)給字典添加一個(gè)類(lèi)方法,將字典中的null值全部替換為空字符串,代碼如下:

.h文件代碼:

#import <Foundation/Foundation.h>
 
@interface NSDictionary (DeleteNull)
 
+(id)changeType:(id)myObj;
 
@end

.m文件代碼:

#import "NSDictionary+DeleteNull.h"
 
@implementation NSDictionary (DeleteNull)
 
#pragma mark - 私有方法
//將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;
}
 
//將NSDictionary中的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;
    }
}
 
@end

使用方法:

[model setValuesForKeysWithDictionary:[NSDictionary changeType:dict]];

第二種方法是利用AFNetworking的自動(dòng)解析,去除掉值為null的鍵值對(duì),代碼如下:

_manager = [AFHTTPRequestOperationManager manager];
    AFJSONResponseSerializer *response = [AFJSONResponseSerializer serializer];
    response.removesKeysWithNullValues = YES;
    _manager.responseSerializer = response;
    _manager.requestSerializer = [AFJSONRequestSerializer serializer];
  • 但是這里有問(wèn)題 如果用AFJSONResponseSerializer 有些請(qǐng)求返回的不是json 直接就走請(qǐng)求失敗方法了

復(fù)制文章:
https://blog.csdn.net/xieliang5210/article/details/50351245

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結(jié)構(gòu)(3).初始化時(shí)...
    歐辰_OSR閱讀 30,246評(píng)論 8 265
  • 霧霾被稱(chēng)為健康的“隱形殺手”, 霧霾天對(duì)呼吸系統(tǒng)影響最大,這已成為多數(shù)人的共識(shí)。呼吸系統(tǒng)與外界環(huán)境接觸最頻繁,且接...
    苯二妹閱讀 949評(píng)論 0 5
  • 為什么人們雄心勃勃指定的計(jì)劃總是會(huì)完不成呢?這應(yīng)該是所有人都曾遇到過(guò)的問(wèn)題。我也曾被這個(gè)“世紀(jì)難題”困擾了好多年,...
    墨律的律閱讀 846評(píng)論 9 9
  • 剽悍晨讀:如何輕松影響他人,加速實(shí)現(xiàn)自己的目標(biāo)? 我們每一天都要與周?chē)娜耸挛锇l(fā)生聯(lián)系、相互影響?!都?xì)節(jié)》一...
    朱朱的餐具閱讀 192評(píng)論 1 6
  • 我知道,我是風(fēng)箏你就是線,不管我飛多遠(yuǎn),身后總有長(zhǎng)長(zhǎng)的掛念。 小時(shí)候,村子里多是留守兒童,爸爸媽媽在外打工,小孩被...
    尋羌閱讀 185評(píng)論 1 2

友情鏈接更多精彩內(nèi)容