赋值时崩溃

时间:2018-11-06 06:18:13

标签: objective-c crash nsdictionary downcast

分析显示,使用以下方法时,有5位用户发生了20次崩溃。后端进行了更改,现在返回包含单个字典的数组。我迅速添加了此代码,以涵盖这两种情况。既然我还是没有一个测试人员能够复制代码,那么该代码会导致崩溃非常不一致吗?

+ (instancetype)createOrUpdateObjectWithDictionary:(NSDictionary *)dictionary inManagedObjectContext:(NSManagedObjectContext *)managedObjectContext {
    NSDictionary *value;
    if ([dictionary isKindOfClass:[NSArray class]]) {
        id array = dictionary;
        value = array[0];
    } else if ([dictionary isKindOfClass:[NSDictionary class]]) {
        value = dictionary;
    }
}

1 个答案:

答案 0 :(得分:1)

一种可能是,当您尝试从数组中获取第0个索引时,它可能不存在,因为数组中没有元素。提取之前,您可以将其检查为

if ([array count] > 0) {
 value = array[0]
}

或者您可以直接使用array.first,这是一种安全的方法,即使数组为空也不会崩溃