1

快速解开可选值时出现致命错误。

我有一个带有背景图像的配置文件 ViewController 和一个头像图像女巫是相同的。

当用户没有设置图像时,我遇到了这个致命错误,相反我想添加一个“默认图像形状”。

我如何检查图像是否不为零?

这是我的代码:

 var currentUser = PFUser.currentUser()

    let User = currentUser as PFUser
    let  userImage:PFFile = User["profileImage"] as PFFile {

 userImage.getDataInBackgroundWithBlock{(imageData:NSData!, error:NSError!)-> Void in

        if !(error != nil) {

            var image:UIImage! = UIImage(data: imageData)

            if image != 0 {
                self.backgroundImageUser.image = image
                self.avatarUserView.image = image
            }
            else if image == 0 {
                self.backgroundImageUser.image = UIImage(named: "Shape")
                self.avatarUserView.image = UIImage(named: "Shape")
            }
            }}}
4

5 回答 5

2

尝试这个:

userImage.getDataInBackgroundWithBlock{(imageData:NSData?, error:NSError?)-> Void in

    if let image = UIImage(data: imageData) {

        self.backgroundImageUser.image = image
        self.avatarUserView.image = image
    }
    else {
        self.backgroundImageUser.image = UIImage(named: "Shape")
        self.avatarUserView.image = UIImage(named: "Shape")
    }
}
于 2014-08-27T09:15:31.463 回答
1

为了让它工作,你必须了解可选链。正如苹果文档所说:

可选链是查询和调用当前可能为 nil 的可选的属性、方法和下标的过程。如果可选包含值,则属性、方法或下标调用成功;如果可选项为 nil,则属性、方法或下标调用返回 nil。多个查询可以链接在一起,如果链中的任何链接为零,则整个链都会优雅地失败。

所以如果你想让一个对象获得一个 nil 值,你必须将它声明为 Optional。将对象声明为可选 您必须在值之后放置一个问号。在您的示例中,它将如下所示:

 var image:UIImage? ;
 image = UIImage(data: imageData) ;

并且通过将这个 UIImage 声明为 Optional,它将被初始化为 nil。

于 2014-08-27T09:04:06.880 回答
1
let image : UIImage? = img

   if image != nil{

   }else{

   }
于 2016-06-28T08:16:18.647 回答
1

迅速 5

var imageBottom = UIImage.init(named: "contactUs")
               if imageBottom != nil {
                   imageBottom = imageBottom?.withRenderingMode(.alwaysTemplate)
                bottomImageview.image = imageBottom
               }
于 2019-11-20T13:06:22.260 回答
-1

事实上问题已经出现了,正如您在编辑后的帖子中看到的那样,我有一个 userImage 声明不是可选的。

所以现在一切正常:

var currentUser = PFUser.currentUser()

    let User = currentUser as PFUser
    if let  userImage:PFFile = User["profileImage"] as? PFFile {

    userImage.getDataInBackgroundWithBlock{(imageData:NSData!, error:NSError!)-> Void in

        if !(error != nil) {

            var image :UIImage! = UIImage(data: imageData)

                self.backgroundImageUser.image = image
                self.avatarUserView.image = image

        }

        }}

     else {
        self.backgroundImageUser.image = UIImage(named: "Shape")
        self.avatarUserView.image = UIImage(named: "Shape")

    }
于 2014-08-27T11:41:38.357 回答