簡體   English   中英

如何快速檢查imageView是否不為零?

[英]How to check if imageView is not nil in swift?

在 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")
            }
            }}}

嘗試這個:

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 的可選的屬性、方法和下標的過程。 如果可選項包含值,則屬性、方法或下標調用成功; 如果可選項為 nil,則屬性、方法或下標調用返回 nil。 可以將多個查詢鏈接在一起,如果鏈中的任何鏈接為零,則整個鏈都會優雅地失敗。

因此,如果您希望對象獲得 nil 值,則必須將其聲明為 Optional。 要將對象聲明為 Optional 您必須在值后放置一個問號。 在您的示例中,它將如下所示:

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

並且通過將此 UIImage 聲明為 Optional,它將被初始化為 nil。

let image : UIImage? = img

   if image != nil{

   }else{

   }

迅捷 5

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

事實上,問題出現了,正如您在編輯后的帖子中所看到的,我有一個 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")

    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM