我对JSON解释器疯狂使用NSNull的解决方案是在NSNull上创建一个类别,在该类别中我定义integerValue,floatValue,length等-
全部返回0。每次遇到其他崩溃时,都添加一个新类别。当我遇到此问题时,我认为我有6或7。
不这样做的问题是,您必须在转换后的对象中到处寻找NULL-我认为是PITA。
编辑:我正在使用的代码,全部在NSNull + JSON.m文件中:
@interface NSNull (JSON)@end@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; }@endEDIT2:现在在Swift 3中:
extension NSNull { func length() -> Int { return 0 } func integerValue() -> Int { return 0 } func floatValue() -> Float { return 0 }; open override var description: String { return "0(NSNull)" } func componentsSeparatedByString(separator: String) -> [AnyObject] { return [AnyObject]() } func objectForKey(key: AnyObject) -> AnyObject? { return nil } func boolValue() -> Bool { return false }}

![-[NSNull长度]:无法识别的选择器发送到JSON对象 -[NSNull长度]:无法识别的选择器发送到JSON对象](http://www.mshxw.com/aiimages/31/485414.png)
