NSNull floatValue intValue 找不到指定方法解決方案

近期遇到一個問題:

        由於後臺人員對於接口數據沒有做空值處理,導致客戶端接收到的有些數據爲空(NSNull),而針對此類數據恰好客戶端的存儲結構爲int和float類型,類型轉換時報出了[NSNull intValue]或者[NSNull floatValue] unrecognized selector sent to instance 的錯誤。


解決此問題嘗試了以下思路:

  • 1 添加returnObject == [NSNull null] 判斷,NSNull的元素配置一個目標類型的初始值。
    問題解決了,但這樣做的話對於應用需要修改的地方較多,想想比較煩。
  • 2 想到此問題的引起原因是NSNull缺失這兩種方法,也就是說只要爲NSNull擴展補充缺失的方法就不會有問題了。

擴展NSNull代碼如下:

#import "NSNull+NullCast.h"   

@implementation NSNull (NullCast)   

- (float)floatValue  
{  

    return 0.0;  

}   

- (int)intValue  
{  

    return 0;  

}  

@end   

在可能出現類似問題的類中引入NSNull+NullCast這個類問題就解決了,無需修改邏輯代碼。

發佈了31 篇原創文章 · 獲贊 4 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章