分析显示,使用以下方法时,有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;
}
}
答案 0 :(得分:1)
一种可能是,当您尝试从数组中获取第0个索引时,它可能不存在,因为数组中没有元素。提取之前,您可以将其检查为
if ([array count] > 0) {
value = array[0]
}
或者您可以直接使用array.first,这是一种安全的方法,即使数组为空也不会崩溃