Сбой при назначении значения
Аналитика показывает, что у 5 пользователей было 20 сбоев при запуске следующего метода. В Backend внесено изменение, которое теперь возвращает массив, содержащий один словарь. Я быстро добавил этот код, чтобы охватить оба случая. А как же этот код может вызывать сбои очень непоследовательно, поскольку я или никто из тестировщиков не смог воспроизвести?
+ (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-й индекс из массива, а он может не существовать, поскольку в массиве не может быть никаких элементов. Перед извлечением вы можете проверить это как
if ([array count] > 0) {
value = array[0]
}
или вы можете напрямую использовать array.first, который является безопасным методом и не потерпит крах, даже если массив пуст