【问题标题】:Unexpectedly found nil while unwrapping optional value [duplicate]在展开可选值时意外发现 nil [重复]
【发布时间】:2014-12-27 19:43:27
【问题描述】:

在我的应用中,我正在检查帖子是否有图片。

为此我正在使用:

if pictures[string]? != nil {
    if var image: NSData? = pictures[string]? {
        imageView.image = UIImage(data: image!)
    }
}

但是还是报错:

致命错误:在展开 Optional 值时意外发现 nil。

我确信这很容易解决,但我对此很陌生 - 我做错了什么?

【问题讨论】:

    标签: ios iphone xcode swift


    【解决方案1】:

    尝试这样做:

    if let imageData = pictures[string] {
        if let image = UIImage(data: imageData) {
            imageView.image = image
        }
    }
    

    假设string 是一个有效的密钥。

    您正在处理可选项,因此在使用之前有条件地解开每个返回对象。

    强制展开是危险的,只有在您绝对确定可选包含值时才应使用。您的 imageData 可能不是创建图像的正确格式,但无论如何您都在强行打开它。这在 Objective-C 中是可以做的,因为它只是意味着 nil 对象被传递。 Swift 就没有那么宽容了。

    【讨论】:

    • 谢谢 :) 现在工作!
    【解决方案2】:

    当您忘记包装可选值时,这是 swift 的问题

    替换行imageView.image = UIImage(data: image!) imageView?.image = UIImage(data: image!)

    【讨论】:

      【解决方案3】:

      这段代码我也遇到了同样的问题

      if(!placeholderColor.isEqual(nil))
       {
         self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : placeholderColor])
       }
      

      并由此解决

      if let placeColor = placeholderColor
       {
         self.attributedPlaceholder = NSAttributedString(string: self.placeholder!, attributes: [NSForegroundColorAttributeName : placeColor])
       }
      

      【讨论】:

        【解决方案4】:

        首先仔细检查 base64 字符串的格式。我的字符串具有以下格式:data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAZDElEQVR42u1daWATZRp+JkfT+76g90ELtKUX5wICshREgYKCKAiCC4iCu+Iq6q6CoKuLF4Igl6jLDaKgiJwiN5SjQAulpTe97zY90qRJ9sc 但不需要逗号之前的所有内容。我通过将格式更改为:
        iVBORw0KGgoAAAANSUhEUgAAAJAAAACQCAYAAADnRuK4AAAZDElEQVR42u1daWATZRp+JkfT+76g90ELtKUX5wICshREgYKCKAiCC4iCu+Iq6q6CoKuLF4Igl6jLDaKgiJwiN5SjQAulpTe97zY90qRJ9sc

        使代码正常工作

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-08-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-11-07
          • 2017-01-23
          • 2016-10-18
          相关资源
          最近更新 更多