如何将 JSON Image-String(不是 url)转换为 UIImage 以供查看
Posted
技术标签:
【中文标题】如何将 JSON Image-String(不是 url)转换为 UIImage 以供查看【英文标题】:How to convert a JSON Image-String (not url) to a UIImage for viewing 【发布时间】:2017-11-21 18:02:59 【问题描述】:嘿,所以我已经尝试了一天来解决这个问题。所以我迫切地想要一个答案。我正在尝试做的实际上很简单,我有一个字符串形式的 JSON 图像数组(我认为)。它们不是 url,图像/字符串以 JSON 格式出现,例如“GoodLogo.png”,问题是来自 JSON 的通常图像以 url 格式出现。但这只是说 png & jpg
我返回的 JSON 代码:
(
id = 1;
logo = "scriptslogo.png";
name = "scripts";
,
id = 2;
logo = "altrlogo.jpg";
name = "Altr";
,
id = 3;
logo = "bostonlogo.jpeg";
name = "boston";
,
)
我有一个变量,它是一个字符串数组。我把 JSON 数据放进去。
代码:
var imageList = [String]()
let string = "https://some.url/api"
let url = NSURL(string: string)
let request = NSMutableURLRequest(url: url! as URL)
request.httpMethod = "GET"
let session = URLSession.shared
let tache = session.dataTask(with: request as URLRequest) (data, response, error) -> Void in
if let jsonObj = try? JSONSerialization.jsonObject(with: data!, options: .allowFragments) as! NSArray
let logo = jsonObj.value(forKey: "logo") as? NSArray
self.imageList = logo as! [String]
DispatchQueue.main.async
self.imageTableView.reloadData()
tache.resume()
然后我所做的就是尝试填充表格视图,但我在下面尝试过的每一种方式都会导致应用程序崩溃或不显示任何内容。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
if tableView == imageTableView
cell = imageTableView.dequeueReusableCell(withIdentifier: "imageCell", for: indexPath) as! imageCell
cell.cellImage.image = imageList[indexPath.row]
// Iv'e tried this which I don't no if it even applies to what I'm trying to do
if let imageData = Data(base64Encoded: imageList[indexPath.row], options: .ignoreUnknownCharacters)
let image = UIImage(data: imageData)
cell.cellImage.image = image
return cell
【问题讨论】:
您正在尝试从图像的名称中检索图像。这是一个问题列表:long-problem-list.jpg 这样不行,即使用图片名称,必须有图片数据或者图片url。 好的,谢谢,这解释了为什么我不能让它工作 我在想图像数据在那个图像字符串中会是怎样的。然后我可以将其转换为图像。但我猜不是 【参考方案1】:试试这个
let url = URL(string: "http://test.com/images/\(imageList[indexPath.row])")
let data = try? Data(contentsOf: url)
if let imageData = data
cell.cellImage.image = UIImage(data: data)
【讨论】:
以上是关于如何将 JSON Image-String(不是 url)转换为 UIImage 以供查看的主要内容,如果未能解决你的问题,请参考以下文章
如何将StructType从Spark中的json数据框分解为行而不是列
如何将视频文件作为 json 数据发送。 (不是文件名或路径,而是内容)到 Android
如何将 int32 类型转换为 int,因为它不是 JSON 可序列化的