我有一个致命错误,而在展开迅速的可选值。
我有一个轮廓视图控制器与背景图像和化身图像女巫是相同的。
当用户还没有一个图像集,我已经得到了这个致命的错误,而不是我想一个“默认图像形状”的补充。
我怎么能检查,如果图像是不是零?
这是我的代码:
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")
}
}}}
尝试这个:
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")
}
}
为了得到这个工作,你必须了解可选链接。 作为苹果的文档说:
可选的链接是用于查询和可选目前可能是零调用属性,方法和标过程。 如果可选包含一个值,属性,方法,或下标调用成功; 如果可选的是零,属性,方法,或下标呼叫返回nil。 多重查询可以链接在一起,整个链条无法正常如果链中的任何环节是零。
所以,如果你想要一个对象来获取零值,你必须将其声明为可选。 要声明的可选您必须放置一个问号后的值的对象。 在你的榜样它看起来就像这样:
var image:UIImage? ;
image = UIImage(data: imageData) ;
并宣称这UIImage的作为可选,它将被零初始化。
let image : UIImage? = img
if image != nil{
}else{
}
事实上,问题是向上,因为你可以在后期编辑看到,我有一个在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")
}