iOS-處理網(wǎng)絡(luò)請求返回空

當網(wǎng)絡(luò)請求返回null,然后對數(shù)據(jù)進行操作就會導(dǎo)致崩潰,

-[NSNull length]: unrecognized selector sent to instance 0x388a4a70

因為NSNull不是字符串,也不是nil,只有一個方法

+ (NSNull *)null;

處理返回值為空有幾種做法

  • 后臺處理
    后臺處理數(shù)據(jù)并判斷之后返回。但是由于iOS和android的不同,不太可行。
    不管server加沒加為空的處理,自己的代碼健壯性還是要有的,

  • 利用isKindOfClass來判斷返回類型并進行處理
    用這種方法會導(dǎo)致判斷代碼過多,不太可行。

  • 如果用的是AFNetWorking,它自帶了一個屬性

/**
 Whether to remove keys with `NSNull` values from response JSON. Defaults to `NO`.
 */
@property (nonatomic, assign) BOOL removesKeysWithNullValues;

修改值為YES,即可處理

((AFJSONResponseSerializer *)manage.responseSerializer).removesKeysWithNullValues = YES;
  • 使用老外寫的類別NullSafe
    直接將.m導(dǎo)入進工程即可。
    在運行時操作,將NSNull進行處理變成nil,因為nil是安全的,可以向nil對象發(fā)送任何message而不會崩潰。

  • 在封裝的網(wǎng)絡(luò)請求中,對返回的數(shù)據(jù)進行處理,實現(xiàn)類型NullSafe中的數(shù)據(jù)處理,類似這樣的操作

if ([propertyValue isKindOfClass:[NSNull class]]){//null類型賦值為空
       [object setValue:@"" forKey:propertyName];
}
    //nil 是 ObjC 對象的字面空值,對應(yīng) id 類型的對象,或者使用 @interface 聲明的 ObjC 對象。
    NSString *strDemo = nil;
    NSURL *urlDemo    = nil;
    id objDemo        = nil;
    
    //Nil 是 ObjC 類類型的書面空值,對應(yīng) Class 類型對象。
    Class classDemo = Nil;
    Class classDemoStr = [NSString class];
    
    //NSNull 是一個代表空值的類,是一個 ObjC 對象。實際上它只有一個單例方法:+[NSNull null],一般用于表示集合中值為空的對象。
    // 因為 nil 被用來用為集合結(jié)束的標志,所以 nil 不能存儲在 Foundation 集合里。
    NSArray *arrDemo = [NSArray arrayWithObjects:@"one", @"two", nil];
    // 錯誤的使用
    NSMutableDictionary *dicDemo = [NSMutableDictionary dictionary];
    [dicDemo setObject:nil forKey:@"someKey"];
    // 正確的使用
    NSMutableDictionary *mutdicDemo = [NSMutableDictionary dictionary];
    [mutdicDemo setObject:[NSNull null] forKey:@"someKey"];

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

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

  • 1、在UIScorllView上添加UISlide,拖動slide的時候,scrollerview會跟著動,解決方...
    渡邊君WM閱讀 3,530評論 5 21
  • 目錄: 在字符串查看指定字符串 UILabel自適應(yīng) 服務(wù)器數(shù)據(jù)處理 copy解釋 對象及可變字典賦值取值方法 n...
    Ryan___閱讀 804評論 0 0
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 2,051評論 0 9
  • 1.badgeVaule氣泡提示 2.git終端命令方法> pwd查看全部 >cd>ls >之后桌面找到文件夾內(nèi)容...
    i得深刻方得S閱讀 4,980評論 1 9
  • 我用多情的臆想 走進夢野中的薄霧 我愿用一柱香的時間 慢慢將你靠近 沒有紛擾 只為融進你的世界
    A愛無言閱讀 137評論 0 2

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