Swift 斯威夫特:有没有一种更简洁的方式来写这句话;如果让;下面的街区?

Swift 斯威夫特:有没有一种更简洁的方式来写这句话;如果让;下面的街区?,swift,if-statement,optional,Swift,If Statement,Optional,我需要打开一个“字符串”,并且仅当可选值不是nil时才进行赋值,因为将nil值赋值给Swift字典会删除键。您可以轻松使用以下语法: if let phone = participant.phone { participantObject["phone"] = phone } else { print("Did not add phone") } 除非要保留现有值。那么没有比你的更好的语法了 但是,如果要在phone为nil时指定

我需要打开一个“字符串”,并且仅当可选值不是nil时才进行赋值,因为将
nil
值赋值给Swift字典会删除键。您可以轻松使用以下语法:

   if let phone = participant.phone {
                participantObject["phone"] = phone
            } else { print("Did not add phone") }
除非要保留现有值。那么没有比你的更好的语法了


但是,如果要在
phone
nil
时指定一个可选值,请使用
nil合并
操作符

participantObject["phone"] = participant.phone

由于将
nil
值指定给Swift字典会删除键,因此可以轻松使用以下语法:

   if let phone = participant.phone {
                participantObject["phone"] = phone
            } else { print("Did not add phone") }
除非要保留现有值。那么没有比你的更好的语法了


但是,如果要在
phone
nil
时指定一个可选值,请使用
nil合并
操作符

participantObject["phone"] = participant.phone
你可以简单地使用

participantObject["phone"] = participant.phone ?? "n/a"
因为此代码仅在
参与者时设置键
“phone”
的值。phone
不是
nil
。唯一的区别是,此代码将删除
“phone”
键以前的值(如果该键存在的话),而您的代码不会出现这种情况

如果您还需要在没有完成分配的情况下打印消息,那么您的代码是非常优化的。不过,这要稍微短一些:

participatnObject["phone"] = participant.phone
你可以简单地使用

participantObject["phone"] = participant.phone ?? "n/a"
因为此代码仅在
参与者时设置键
“phone”
的值。phone
不是
nil
。唯一的区别是,此代码将删除
“phone”
键以前的值(如果该键存在的话),而您的代码不会出现这种情况

如果您还需要在没有完成分配的情况下打印消息,那么您的代码是非常优化的。不过,这要稍微短一些:

participatnObject["phone"] = participant.phone

您可以使用
Optional
map()
方法(有关类似问题,请参阅)。但这并不能使它更清晰。您可以尝试
participantObject[“phone”]=participant.phone??participantObject[“phone”]
将使用
参与者。phone
如果它不是零,则将self分配给self。您可以使用
可选
映射()
方法(有关类似问题,请参阅)。但这并不能使它更清晰。您可以尝试
participantObject[“phone”]=participant.phone??participantObject[“phone”]
将使用
参与者。phone
如果它不是零,则将self分配给self。虽然了解
操作员很有用,但我绝对不建议以这种方式使用它。如果让phone=participantObject[“phone”]
在程序的其他地方使用
比测试该值是否等于
“n/a”
更容易。如果您想在屏幕上显示电话号码,
??
操作员将非常有用,不过:您可以使用类似于
phoneLabel.text=participantObject[“phone”]??“n/a”
虽然了解
??
操作符很有用,但我绝对建议不要以这种方式使用它。如果让phone=participantObject[“phone”]
在程序的其他地方使用
比测试该值是否等于
“n/a”
更容易。如果您想在屏幕上显示电话号码,
??
操作员将非常有用,不过:您可以使用类似于
phoneLabel.text=participantObject[“phone”]??“不适用”