无法使用“ null”检查开关案例。迅速的价值

发布于 2025-02-04 13:48:08 字数 1621 浏览 1 评论 0原文

要检查多个条件,我正在使用切换语句

代码:在这里所有情况都很好,但是。 如果USER_DETAILS?。 “”< =“ 1.9”为什么?

如果我强迫unwrap case _ where(user_details?。评级)! 应用程序会崩溃

?。

< =“ 1.9”:然后,当访问此 user_details时,

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

}

To check multiple conditions i am using switch statements

code: here all cases working fine but. if user_details?.rating = "" is empty then i need to show default case i mean all stars empty but its going to case _ where user_details?.rating ?? "" <= "1.9" why?

if i do force unwrap case _ where (user_details?.rating)! <= "1.9": then app getting crash when reach this

user_details?.rating = "" then how to show all stars empty

please guide me

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

}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梓梦 2025-02-11 13:48:08

该应用程序崩溃了,因为您是强制打开 user_details?。评估基本上说:此属性具有不nil的值,如果我错了,崩溃了

尝试Unbrapping USER_DETAILS?。评估在Switch语句之前安全地:

  1. 使用如果让:

     如果让rating = user_details?。
    }别的 {
    }
     
  2. 使用guard

      guard let rating = user_details?。
        返回
    }
     
  3. 提供默认值:

      let rating = user_details?。 “”
     

然后您的代码看起来像:

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
}

The app is crashing because you are force unwrapping user_details?.rating which basically says: This property holds a value that is not nil, and if I'm wrong crash the app.

Try unwrapping user_details?.rating safely before the switch statement:

  1. Using if let:

    if let rating = user_details?.rating {
    }else {
    }
    
  2. Using guard let:

    guard let rating = user_details?.rating else {
        return
    }
    
  3. Providing default value:

    let rating = user_details?.rating ?? ""
    

Then your code will look like:

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文