Сбой при назначении значения

Аналитика показывает, что у 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, который является безопасным методом и не потерпит крах, даже если массив пуст

Другие вопросы по тегам