如何在Swift中从Json获取图像

时间:2019-03-02 04:06:27

标签: swift xcode

我是xcode开发人员的宝贝,我真的需要帮助。以下是我的json数据之一,我已经在输出中打印了该文本,因为我已经在屏幕上显示了该文本,但是现在我正尝试从服务器获取图像,而且我不知道该怎么做

JSON:

  "MoviePhotoL" : "\/Data\/UploadFile\/cnymv-01_1.jpg",
  "MoviePhotoP" : "\/Data\/UploadFile\/cnymv-02_1.jpg"

XCODE:

     let userImage = iP["MoviePhotoP"] as? String
     cell.imageView.image = userImage (??????)

我知道String无法转换为UIImage,我已经尝试将其转换为NSData并将NSData转换为UIImage(data),但仍然无法获得图片:'(....有人可以帮帮我吗??我真的需要帮助

1 个答案:

答案 0 :(得分:0)

这些路径似乎相对于另一个来源。
您需要生成或获取一个绝对URL,以便您可以访问图像。

现在您只有一个简单的字符串,仅此而已,就无法将其转换为数据或图像。
您需要一个可放入浏览器并加载图像的字符串。
一旦能够做到,就可以在应用程序中加载图像。


示例:

func getImage(from string: String) -> UIImage? {
    //2. Get valid URL
    guard let url = URL(string: string)
        else {
            print("Unable to create URL")
            return nil
    }

    var image: UIImage? = nil
    do {
        //3. Get valid data
        let data = try Data(contentsOf: url, options: [])

        //4. Make image
        image = UIImage(data: data)
    }
    catch {
        print(error.localizedDescription)
    }

    return image
}

//1. Get valid string
let string = "https://images.freeimages.com/images/large-previews/f2c/effi-1-1366221.jpg"

if let image = getImage(from: string) {
    //5. Apply image
    cell.imageView.image = image
}

注意:Data(contentsOf:options:)是同步的,可能会降低性能。图像越大,锁定线程的时间越长。
通常,您会在后台线程中执行如此繁重的任务,并在主线程上更新UI,但是...为了使答案简单,我选择不显示它。