iOS开发丨解决json中null/NSNull导致闪退的问题

在网络请求中,有时候会遇到返回值为NSNull的情况,如果直接赋值给对象会导致崩溃。

解决方法

创建一个NSNull类的扩展NSNull+NullCast,来处理不同情况下的null、NSNull值,如下:

创建文件时选择Objective-C File
文件类型选择Category,Class选择NSNull

.h文件

#import <Foundation/Foundation.h>

@interface NSNull (NullCast)

@end

.m文件

#import "NSNull+NullCast.h"

@implementation NSNull (NullCast)

- (float)floatValue { return 0.0; }

- (int)intValue { return 0; }

- (NSUInteger)length { return 0; }

- (NSInteger)integerValue { return 0; };

- (NSString *)description { return @"0(NSNull)"; }

- (NSString *)stringValue { return @""; };

- (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;
}

这样,即使是遇到NSNull,也能自动转换成对应类型的初始化值,而不是导致程序崩溃。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容