1. 程式人生 > >NSNull floatValue intValue 找不到指定方法解決方式

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

空值處理 img 存儲 cli content eas == objc dsm

最近遇到一個問題:

? ? ? ? 因為後臺人員對於接口數據沒有做空值處理。導致client接收到的有些數據為空(NSNull),而針對此類數據恰好client的存儲結構為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這個類問題就攻克了。無需改動邏輯代碼。

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