如何解码和编码来自 jsonplaceholder API 的图像

how decode and encode image from jsonplaceholder API

我想通过这个API http://jsonplaceholder.typicode.com/photos/3 显示来自 swiftyJson 的 "url" 的图像 我写了这段代码,但是 return nil

var base64String = subDataJSON["url"].stringValue
let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))
self.MyImage.image = decodedIamge! as UIImage

如何从 API 中获取图片? APIs里的所有图片都是用同样的方式处理的吗?

该代码有效吗?从 API http://jsonplaceholder.typicode.com/photos/3

的回复中可以看出
{
  "albumId": 1,
  "id": 3,
  "title": "officia porro iure quia iusto qui ipsa ut modi",
  "url": "http://placehold.it/600/24f355",
  "thumbnailUrl": "http://placehold.it/150/1941e9"
}

基本上,您在此代码 subDataJSON["url"].stringValue 上所做的是检索 "url" 节点的值,它将 return “http://placehold.it/600/24f355”。所以,我认为它不是您期望的 base64 字符串。而不是调用

let decodedData = NSData(base64EncodedString: base64String, options: NSDataBase64DecodingOptions(rawValue: 0))

试试这个代码

let decodedData = NSData(contentsOfURL: NSURL(string: base64String))

但是,这可能会阻塞您的 UI 线程,因为我们正在调用同步。更好的方法是

let dataTask: NSURLSessionDataTask = NSURLSession.sharedSession().dataTaskWithURL(NSURL(string: "")!) { (
            data, response, error) -> Void in
            if let imageView = self.MyImage {
                dispatch_async(dispatch_get_main_queue()) {
                    imageView.image = UIImage(data: data)
                }
            }

        };

        dataTask.resume()