ios - 展开时意外发现 URL 为 nil

标签 ios swift url

<分区>

我有一个 Firebase 数据库,其中包含我的图片网址。我正在尝试根据配置文件用户名调用配置文件图像。我从 profileImageURL 获得了正确的 URL,但是每当我启动 URLSession 时,它总是显示为 nil。这是我的代码:

 if let profileImageURL = user.profileImageURL{

      let url = URL(string: profileImageURL)
      URLSession.shared.dataTask(with: url!, completionHandler: { ( data, response, error) in
           //Download Hit an Error
           if error != nil {
                print(error!)
                return
           }
           DispatchQueue.main.async() {
                     cell.profileNameImageView?.image = UIImage(data: data!)
                }
      })
 }

示例 url 字符串:

https://firebasestorage.googleapis.com/v0/b/instagram-caption-generator.appspot.com/o/FeaturedAccounts%2FProfileImage%2Ffeatured_2.jpg?alt=media&token=4a2774f5-f192-4f06-b7c1-a4044921c075

最佳答案

使用带有 URL 初始化器的 if-let block 。此错误的原因是 url 的可选实例 - init?(string: String) .您 profileImageURL 可能不是有效的 url 字符串,因此 URL 初始化程序无法创建类 URL 的实例并返回 nil,您正尝试使用 解包!

试试看。

if let profileImageURL = user.profileImageURL{

   // Use if-let block with URL initialiser.
  if let url = URL(string: profileImageURL) { // try this - if let url = URL(string: "gs://instagram-caption-generator.appspot.com/FeaturedAccoun‌​ts/ProfileImage/feat‌​ured_2.jpg") {

     // Remove unwrapper !, from url           
     URLSession.shared.dataTask(with: url, completionHandler: { ( data, response, error) in
       //Download Hit an Error
         if error != nil {
             print(error!)
              return
         }

          if let imageData = data {
            DispatchQueue.main.async() {
              cell.profileNameImageView?.image = UIImage(data: imageData)
            }
          } else {
            print("image data is nil")
          }
       }).resume()
  } else {
    print("url is nil")

  }
}

关于ios - 展开时意外发现 URL 为 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47910798/

相关文章:

swift - 无法识别枚举的 rawValue 属性

ios - 两个 UIViewImages 的交集

ios - 如何在titanium框架中检测iOS的型号

ios - Swift ios 这是一个很好的解决方案而不是表格单元格

ios - 如何通过提供角落位置来缩放 Mapview

ios - 如何在 iOS 中捕获 UIWebView 重定向 url

git - 通过 Visual Studio 2013 将 URL 更改为远程 Git 存储库?

java - 使用 Glide 从 URL 加载图像但不带扩展名

iphone - 如何突出显示图像中的文字?

ios - Segue 屏幕返回主屏幕后,在哪里放置代码来填充 UITextfield(标题字段)?