Я использую AlamofireImage для отображения изображений в UITableViewCell.
typealias boolAndAnyCompletion = (_ success: Bool, _ value: Any?) -> Void
class ImageHelper {
func fetchImage(url:String, completion: @escaping boolAndAnyCompletion) {
Alamofire.request(url).responseImage { response in
if let image = response.result.value {
completion(true, image)
} else {
completion(false, "No image")
}
}
}
}
Это в основном работает нормально. Я беру URL-адрес из объекта JSON и пытаюсь получить изображение по URL-адресу. В основном это работает нормально и либо возвращает изображение, как ожидалось, либо терпит неудачу, если строка URL-адреса равна 404 или иным образом недействительна.
Однако сегодня мое приложение начало падать с
libc++abi.dylib: завершение с необработанным исключением типа NSException
Я сузил это до описанного выше метода, когда мой ответ JSON давал мне ошибочный URL-адрес, который не указывал на изображение.
если бы URL-адрес, который я получил для изображения, был "https://bbc.co.uk/news/", что вызывает сбой. Однако, если я ищу изображение на "https://www.google.co.uk/maps/", который завершается ожидаемым сбоем без сбоев и обработки ошибок.
Я знаю, что лучшее решение - помещать в JSON только правильные URL-адреса изображений, но я имел дело с людьми, которые делают это, и могут возникнуть ошибки. Итак, есть ли причина, по которой один из них «не сработает правильно», а другой разбил мое приложение? Как я могу предотвратить этот сбой на некоторых недопустимых URL-адресах?