[英]Unable to check Switch cases with "null" value in swift
要檢查多個條件,我正在使用switch statements
代碼:這里所有情況都很好,但是。 如果user_details?.rating = ""
case _ where user_details?.rating ?? "" <= "1.9"
case _ where user_details?.rating ?? "" <= "1.9"
為什么?
如果我強制打開case _ where (user_details?.rating)! <= "1.9":
case _ where (user_details?.rating)! <= "1.9":
然后應用程序在達到這個值時崩潰
user_details?.rating = "" 那么如何將所有星星顯示為空
請指導我
switch user_details?.rating{
case "1.0":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "staremp")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case _ where user_details?.rating ?? "" <= "1.9":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star-half")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case "2.0":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case _ where user_details?.rating ?? "" <= "2.9":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star")
star3.image = UIImage(named: "star-half")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
default:
star1.image = UIImage(named: "staremp")
star2.image = UIImage(named: "staremp")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
}
該應用程序正在崩潰,因為您force unwrapping
user_details?.rating
基本上說:此屬性包含的值不是nil
,如果我錯了,則使應用程序崩潰。
嘗試在 switch 語句之前安全地打開user_details?.rating
:
使用if let
:
if let rating = user_details?.rating { }else { }
使用guard let
:
guard let rating = user_details?.rating else { return }
提供默認值:
let rating = user_details?.rating ?? ""
然后您的代碼將如下所示:
guard let rating = user_details?.rating else {
//do something if it is nil
return
}
switch rating {
case "1.0":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "staremp")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case _ where user_details?.rating ?? "" <= "1.9":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star-half")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case "2.0":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
case _ where user_details?.rating ?? "" <= "2.9":
star1.image = UIImage(named: "star")
star2.image = UIImage(named: "star")
star3.image = UIImage(named: "star-half")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
default:
star1.image = UIImage(named: "staremp")
star2.image = UIImage(named: "staremp")
star3.image = UIImage(named: "staremp")
star4.image = UIImage(named: "staremp")
star5.image = UIImage(named: "staremp")
break
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.