Как добавить изображение флага из API? - PullRequest
0 голосов
/ 31 мая 2018
import UIKit

class DetailsViewController: UIViewController {
   @IBOutlet weak var alpha3CodeLbl: UILabel!
   @IBOutlet weak var regionLbl: UILabel!
   @IBOutlet weak var flagImage: UIImageView!

    var countrie:jsonStruct?


    override func viewDidLoad() {
        super.viewDidLoad()
        alpha3CodeLbl.text = countrie?.alpha3Code
        regionLbl.text = countrie?.region
        let urlString = "http://restcountries.eu/rest/v2/all" + (countrie?.flag)!

        flagImage.downloadedFrom(url: url!)


    }
}

extension UIImageView {
    func downloadedFrom(url: URL, contentMode mode: UIViewContentMode = .scaleAspectFit) {
        contentMode = mode
        URLSession.shared.dataTask(with: url) { data, response, error in
            guard
                let httpURLResponse = response as? HTTPURLResponse, httpURLResponse.statusCode == 200,
                let mimeType = response?.mimeType, mimeType.hasPrefix("image"),
                let data = data, error == nil,
                let image = UIImage(data: data)
                else { return }
            DispatchQueue.main.async() {
                self.image = image
            }
            }.resume()
    }
    func downloadedFrom(link: String, contentMode mode: UIViewContentMode = .scaleAspectFit) {
        guard let url = URL(string: link) else { return }
        downloadedFrom(url: url, contentMode: mode)
    }
}

Я пытаюсь получить изображение флага из этого API http://restcountries.eu/rest/v2/all

Нет ошибки, но изображение не появляется.Но нет никакого результата, если кто-то здесь может решить эту проблему.Пожалуйста, не так, что все в порядке, и попробуйте получить изображение слишком многими способами, но все равно безрезультатно.

Кроме того, я пробую это

    let urlString = "http[enter image description
 here][1]://restcountries.eu" + (countrie?.flag)!

1 Ответ

0 голосов
/ 31 мая 2018

Несколько вещей, которые нужно исправить.Вы должны проверить URL перед его использованием.

let str = "yourURL"
guard let theUrl = URL(string: str) else { return }

Как упоминалось @rmaddy в комментарии выше, UIImage не будет работать с файлами SVG.Вместо этого используйте UIWebView

var request = URLRequest(url:theUrl)
webView.loadRequest(request)

или попробуйте SVGKit для преобразования SVG, как описано здесь

...