代码之家  ›  专栏  ›  技术社区  ›  user1904273

为什么在Swift中UIImage是可选的,当它有一个默认值时

  •  -3
  • user1904273  · 技术社区  · 7 年前

    我试图编写一个函数来选择联系人的图片。 因为我设置了一个默认值,所以我认为编译器可以,但是当我试图在completion闭包中返回结果时,它给出了错误:可选类型UIImage的值?必须展开为UIImage类型的值。我需要做什么?

     func getContactImage (contact:Contacts, completion:@escaping (_ myimage: UIImage)->()){//open 1 method
            let defaultimg = UIImage(named:"headshot.png")
            var animg = self.loadImageNamed(contact.pic) ?? defaultimg
            if (contact.first==nil&&contact.last==nil) {
                if !(contact.co==nil) {
                    animg = UIImage(named:"company.png")
                }
            }
            completion(animg) //ERROR HERE
        }
    
    2 回复  |  直到 7 年前
        1
  •  1
  •   Robert Dresler Gustavo Vollbrecht    7 年前

    但是 defaultimg 以及名为 company.png 可以是 nil 我也是。如果你知道这些图像存在,你可以强制拆开它们:

    let defaultimg = UIImage(named: "headshot.png")!
    
    animg = UIImage(named: "company.png")!
    
        2
  •  0
  •   KingHodor    7 年前

    因为你的图片(“headshot.png”)可能不在你的目录中。这就是为什么它是可选的。例如,下面不是可选的。

    let image = UIImage()