【问题标题】:Get a nil when I check url string image当我检查 url 字符串图像时得到一个 nil
【发布时间】:2019-06-10 16:45:28
【问题描述】:

我的图片中有空的 url 字符串。我将 url 字符串 图像保存在 firestore 中。但有时会发生没有图片,我需要检查并返回一个空图片。

当我加载视图时,我收到错误 nil。因为我在 firestore 中的变量是空的。

这是我的代码:

guard let dataLogoImage = try? Data(contentsOf: URL(string: self.hall!.studioHallLogo)!) else { return }

稍后我将dataLogoImage 应用于变量tempLogoImage

self.tempLogoImage = UIImage(data: dataLogoImage)

如何检查Data空网址字符串 并避免nil

【问题讨论】:

  • 切勿使用Data(contentsOf:) 通过网络从远程 URL 获取数据。该初始化程序应该只用于文件系统的本地 URL。使用URLSession.dataTask 从远程 URL 下载图像(或任何其他数据)。

标签: ios swift image guard


【解决方案1】:

大卫是对的。所以这里是URLSession.dataTask 用法的示例。这应该适合你。

if let urlString = self.hall?.studioHallLogo,
let url = URL(string: urlString) {

    let task = URLSession.shared.dataTask(with: url) { data, response, error in
        guard let data = data, error == nil else { return }

        // execute on main thread
        DispatchQueue.main.async {
            self.tempLogoImage = UIImage(data: data)
        }
    }

    task.resume()
}

如您所见,我们正在安全地解开您的可选内容,例如 self.hall?.studioHallLogo,并创建您的 URL 对象。 :) 很快你就会需要一个库来更好地处理图像加载和缓存。我很乐意建议:翠鸟

我希望这会有所帮助。祝你好运。

【讨论】:

    猜你喜欢
    • 2020-08-22
    • 2018-06-08
    • 1970-01-01
    • 2021-06-01
    • 2019-05-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多