如何检查imageView是不是在迅速?
我有一个致命的错误,而迅速打开一个可选的值。
我有一个configuration文件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") } }}}
为了得到这个工作,你必须了解可选的链接。 正如苹果文档所言:“可选链是一个查询和调用可能目前为零的可选属性,方法和下标的过程,如果可选包含一个值,则属性,方法或下标调用成功;如果可选的是nil,属性,方法或者下标调用返回nil。多个查询可以链接在一起,如果链中的任何链接都是零,整个链就会优雅地失败。
所以如果你想要一个对象得到一个零值,你必须声明它是可选的。 将对象声明为可选您必须在值后面放置一个问号。 在你的例子中,它看起来就像这样:
var image:UIImage? ; image = UIImage(data: imageData) ;
通过将这个UIImage声明为Optional,它将被初始化为nil。
尝试这个:
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") } }
let image : UIImage? = img if image != nil{ }else{ }
事实上,问题已经出现,就像你在编辑过的post中看到的,我有一个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") }