NSNull 使我的 initWithDictionary 崩溃

2024-01-03

我正在解析一个 JSON 文件。

获取 NSDictionary 后,我将字典中的对象解析为对象数组。但是,对于某些 JSON 文件,我得到 NULL,这应该没问题,但是对于那些我期待某些内容但得到 null 的地方,它会使我的应用程序崩溃:

- (id)initWithDictionary:(NSDictionary *)boxDictionary {
 if ([self init]) {
  // ... 
  int numberOfBoxes = [[boxDictionary valueForKey:@"box_count"] intValue];
  int numberOfItemsInBoxes = [[boxDictionary valueForKey:@"box_items_count"] intValue];
        // ..
 }
 return self;
}

基本问题似乎是您从 valueForKey: 调用中返回的 NSNull 上没有 intValue 方法。

您可以添加 intValue 方法,但是对于 NSNull,您希望它返回什么? 0? -1?

执行此操作的代码如下所示。

在 MyNullExtensions.h 中:

@interface NSNull (integer)
-(int) intValue;
@end

在 MyNullExtensions.m 中:

#import "MyNullExtensions.h"

@implementation NSNull (functional)
-(int) intValue
{
    return -1;
}
@end

之后, 布莱克。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NSNull 使我的 initWithDictionary 崩溃 的相关文章

随机推荐