Primero Si la imagen la vamos a cargar desde una url que no sea segura debemos modificar nuestro Info.plist para que nos deje cargar la imagen entonces en nuestro archivo Info.plist agregamos esto:
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key> <true/> </dict>
Ahora crea la siguiente funcion en algun controller o bien en una clase de utilidad que tengas, o bien se puede hacer como una extension de la Clase UIImageView, como se te antoje igual pondre los tres ejemplos que son casi iguales:
func downloadImage(_ uri : String, inView: UIImageView){ let url = URL(string: uri) let task = URLSession.shared.dataTask(with: url!) {responseData,response,error in if error == nil{ if let data = responseData { DispatchQueue.main.async { inView.image = UIImage(data: data) } }else { print("no data") } }else{ print(error) } } task.resume() }
Con esta funcion lo metemos dentro de un Controller y bueno nuestro controller quedaria asi:
class ViewController: UIViewController { @IBOutlet weak var imageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() self.downloadImage("https://dummyimage.com/300x300/0F0F0F/00FF00.png&text=Loaded+Image!", inView: imageView) } func downloadImage(_ uri : String, inView: UIImageView){ let url = URL(string: uri) let task = URLSession.shared.dataTask(with: url!) {responseData,response,error in if error == nil{ if let data = responseData { DispatchQueue.main.async { inView.image = UIImage(data: data) } }else { print("no data") } }else{ print(error) } } task.resume() } }
Nos quedaria asi entonces en el emulador:
Aqui les dejo el link con el codigo: