gpt4 book ai didi

swift - 任何实现 "if let"然后比较(例如字符串比较)的单行代码?

转载 作者:行者123 更新时间:2023-11-28 09:44:44 25 4
gpt4 key购买 nike

我正在对我同事的 Swift 代码进行代码审查,并想重构以下代码:

let status = JSON["status"]

if (status != nil && status as! String == "success") {
...
}

一行代码可以实现吗?

我只能设法让它变成这样:

if let status = JSON["status"] as! String {
if status == "success" {

我希望我能把它变成这样:

if let status = JSON["status"] as! String == "success" {

但它无法编译...有人可以帮忙吗?谢谢。 guard 语句在这种情况下有用吗?

其实我是Swift的新手。

最佳答案

if let status = JSON["status"] as? String where status == "success" {

此外,如果您使用 swiftyJSON 库:

if let status = JSON["status"].string where status == "success" {

编辑:进一步说明

当你写作时

if let status = JSON["success"] as? String

你会得到一个解包的字符串,这意味着它总是有一个值,如果你做其他事情它将是可选的(“nil”),所以当你使用:

if let status = JSON["success"] where status as? String = ""

你将有一个解包的 JSON 对象,是否是一个字符串还有待确定,所以当你想使用某个对象类型(在本例中为字符串)时,你会立即在“if let”部分向下转换它所以你也可以使用字符串函数,以防你想要一个 bool 值(或其他检查)。

在展开可选值之后,我从来没有真正沮丧过,但我想它可能会出错,因为你仍然有一个可能为 nil 的可选对象,而你真的想在它之前有一个值。

关于swift - 任何实现 "if let"然后比较(例如字符串比较)的单行代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35742123/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com