Swift 如何从服务器URL数据获取图像到UIBarButton?

Swift 如何从服务器URL数据获取图像到UIBarButton?,swift,uiimageview,uibarbuttonitem,Swift,Uiimageview,Uibarbuttonitem,我想从我的工具栏按钮项中的服务器URL获取图像。我使用的代码如下所示,但它给出了一个错误:线程1:致命错误:在隐式展开可选值时意外发现nil。我怎样才能解决这个问题?注意:loadImg func是一个扩展,它的工作方式是另一个控制器。serverURL是我的配置文件数据类 让imageView=UIImageView() imageView.loadImg(url:url(string:self.serverURL.ppUrl!))//此行给出错误 让customView=UIButton(类

我想从我的工具栏按钮项中的服务器URL获取图像。我使用的代码如下所示,但它给出了一个错误:线程1:致命错误:在隐式展开可选值时意外发现nil。我怎样才能解决这个问题?注意:loadImg func是一个扩展,它的工作方式是另一个控制器。serverURL是我的配置文件数据类

让imageView=UIImageView()
imageView.loadImg(url:url(string:self.serverURL.ppUrl!))//此行给出错误
让customView=UIButton(类型:。系统)
customView.setImage(imageView.image,用于:。正常)
customView.backgroundColor=.white
让barButtonItem=UIBarButtonItem(customView:customView)
navigationItem.leftBarButtonItem=barButtonItem
扩展UIImageView{
公共函数loadImg(url:url){
DispatchQueue.global().async{[weak self]在中
如果let data=try?数据(contentsOf:url){
如果let image=UIImage(数据:数据){
DispatchQueue.main.async{
自我?.image=image
}
}
}
}
}
}

您正在强制展开两个选项(标有
)。如果其中一个或两个都为零,则会发生崩溃。所以你需要先检查它们是否存在,否则就保释

大概是这样的:

let imageView = UIImageView()
if let urlString = self.serverURL.ppUrl as? String, let url = URL(string: urlString) as? URL {

    imageView.loadImg(url: url)
    ...
}

您正在强制展开两个选项(标有
)。如果其中一个或两个都为零,则会发生崩溃。所以你需要先检查它们是否存在,否则就保释

大概是这样的:

let imageView = UIImageView()
if let urlString = self.serverURL.ppUrl as? String, let url = URL(string: urlString) as? URL {

    imageView.loadImg(url: url)
    ...
}

谢谢,我试过了,但还是一样的错误。我将检查我的数据您可以在这里找到有关此错误的更多信息:什么是
loadImg
?loadImg是从服务器数据中获取类似于url字符串的图像的扩展。它正在其他控制器中工作。在这个控制器中,我使用了两个选项(标有!),但它工作正常。“如果让”模式比我的“打开两个选项”更安全,对吗?我是swift编程新手谢谢你,我试过了,但还是一样的错误。我将检查我的数据您可以在这里找到有关此错误的更多信息:什么是
loadImg
?loadImg是从服务器数据中获取类似于url字符串的图像的扩展。它正在其他控制器中工作。在这个控制器中,我使用了两个选项(标有!),但它工作正常。“如果让”模式比我的“打开两个选项”更安全,对吗?我对快速编程是新手