在使用網(wǎng)絡(luò)請(qǐng)求時(shí),如果服務(wù)端返回的數(shù)據(jù)不夠標(biāo)準(zhǔn),就會(huì)出現(xiàn)value為null情況,為此我們需要添加很多判斷!比如:
if (![str isKindOfClass:[NSNull class]]) {
NSLog(@"%d",(int)str.length);
}
如果不判斷直接使用,就有可能出現(xiàn)運(yùn)行時(shí)錯(cuò)誤導(dǎo)致崩潰,因?yàn)槟悴恢朗裁辞闆r下,服務(wù)器就會(huì)將某些值返回成null.但是每個(gè)字段都判斷也很麻煩!我在stackoverflow看到的一個(gè)方法分享給大家,提供個(gè)思路.
方法:
創(chuàng)建NSNull的分類,讓一些常見的NSString或NSNumber的方法給NSNull提供一份,這樣在調(diào)用類似str.length的方法時(shí),就不會(huì)因?yàn)镹SNull沒有l(wèi)ength方法而照成崩潰了.
.h
#import <Foundation/Foundation.h>
@interface NSNull (JSON)
@end
.m
#import "NSNull+JSON.h"
@implementation NSNull (JSON)
- (NSUInteger)length { return 0; }
- (NSInteger)integerValue { return 0; };
- (float)floatValue { return 0; };
- (NSString *)description { return @"0(NSNull)"; }
- (NSArray *)componentsSeparatedByString:(NSString *)separator {return @[]; }
- (id)objectForKey:(id)key { return nil; }
- (BOOL)boolValue { return NO; }
- (NSRange)rangeOfCharacterFromSet:(NSCharacterSet *)aSet{
NSRange nullRange = {NSNotFound, 0};
return nullRange;
}
@end