NSNull floatValue intValue 找不到指定方法解決方式
阿新 • • 發佈:2019-04-22
空值處理 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 找不到指定方法解決方式