提问人:Swift 提问时间:6/6/2022 更新时间:6/6/2022 访问量:463
无法在 swift 中检查具有“null”值的开关案例
Unable to check Switch cases with "null" value in swift
问:
检查我正在使用的多个条件switch statements
代码:这里所有情况都工作正常,但是。如果user_details?.rating = “”
是空的,那么我需要显示默认大小写,我的意思是所有星星都是空的,但它会进入 case _,user_details在哪里?。额定值??“” <= “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
}
答:
1赞
Timmy
6/6/2022
#1
应用程序崩溃了,因为你基本上是说:这个属性持有一个不是零
的值,如果我错了,应用程序就会崩溃。force unwrapping
user_details?.rating
尝试在 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
}
评论
rating
"" <= "1.9"
true
user_details?.rating ?? "" <= "1.9" && user_details?.rating ?? "" != ""
let starCount = Double(user_details?.rating) ) ?? 0
break
case