Swift4:来自 URL 的 UIImage

Posted

技术标签:

【中文标题】Swift4:来自 URL 的 UIImage【英文标题】:Swift4: UIImage from URL 【发布时间】:2018-08-21 03:20:11 【问题描述】:

我有问题。

我想从 url 获取图像,并在表格单元格中显示 UIimage。 let url 有价值,但它变成了nil

运行这段代码出错了

Fatal error: Unexpectedly found nil while unwrapping an Optional value

为什么值为nil

let url = URL(string: stores![indexPath.row].photos[0].path)

    DispatchQueue.global().async 
        let data = try? Data(contentsOf: url!)
        DispatchQueue.main.async 
             cell.imageCell.image = UIImage(data: data!)
        
    
    return cell

商店![indexPath.row].photos[0].path 值

http://127.0.0.1:8000/photos/NY_0.jpeg

【问题讨论】:

不要对非本地资源 URL 使用 Data(contentsOf: URL) 初始化程序。你不应该同步下载这些。 127.0.0.1:8000/photos/NY_0.jpeg 看起来不是一个有效的网址 代码似乎应该可以工作。但是,您使用本地 API 来获取图像,Check if AppTransportSecurity is allowing you to make the request @kathayatnk 我设置了AppTransportSecurity 但值为零 你确定stores![indexPath.row].photos[0].path 确实有http://127.0.0.1:8000/photos/NY_0.jpeg 的准确值吗?这是一个完全有效的 URL,并且 not 会导致 url 成为 nil。确保值中没有空格。 【参考方案1】:

您是否尝试将该 URL 复制并粘贴到浏览器中并查看该图像是否确实存在?

还有你使用的“!”到处都在要求崩溃。只使用“!”当你完全确定你正在解包的东西不会是零时。

guard let stores = stores else  return cell 
guard indexPath.row < stores.count else  return cell 

if let url = URL( string:stores[indexPath.row].photos.first.path)

    DispatchQueue.global().async 
      if let data = try? Data( contentsOf:url)
      
        DispatchQueue.main.async 
          cell.imageCell.image = UIImage( data:data)
        
      
   


return cell

【讨论】:

是的,我已检查是否从该 URL 获取图像。 粘贴这段代码,我在guard let stores = stores else return guard indexPath.row &lt; stores.count else return 部分出现错误。错误Non-void function should return a value @Alex :错误是因为您没有从您的方法中返回单元格,就像您的问题一样。 如@kathayatnk 所指出的,已通过返回单元格更新了我的答案

以上是关于Swift4:来自 URL 的 UIImage的主要内容,如果未能解决你的问题,请参考以下文章

推送通知点击获取 url 并在 View Controller , iOS , Swift4.2 中显示

如何从url数组循环下载swift4中的pdf

从 URL 加载图像并使用 Swift4 将它们存储在本地

Swift4 url​​Session Decodable 中的 POST 方法不起作用(这里出了啥问题?)

使用 alamofire 和 Swift4 IOS 获取 XML HTTP url 的响应

使用 AVPLayer 实现媒体播放器以在 Swift 4 的模态视图控制器的弹出视图中播放来自远程 url 的音频