如何检查imageView在swift中是否为零?

时间:2014-08-27 08:02:02

标签: ios swift optional-variables

在swift中展开可选值时出现致命错误。

我有一个配置文件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")
            }
            }}}

5 个答案:

答案 0 :(得分: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")
    }
}

答案 1 :(得分:1)

为了使其正常工作,您必须了解Optional Chaining。 正如the Apple Documentation所说:

  

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

因此,如果您希望对象获取nil值,则必须将其声明为Optional。将对象声明为可选您必须在值后面放置一个问号。 在您的示例中,它将如下所示:

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

通过将此UIImage声明为Optional,它将使用nil初始化。

答案 2 :(得分:0)

let image : UIImage? = img

   if image != nil{

   }else{

   }

答案 3 :(得分:0)

迅速5

var imageBottom = UIImage.init(named: "contactUs")
               if imageBottom != nil {
                   imageBottom = imageBottom?.withRenderingMode(.alwaysTemplate)
                bottomImageview.image = imageBottom
               }

答案 4 :(得分:-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")

    }