斯威夫特:有没有更简洁的方式来编写"如果让"挡在下面?

时间:2016-02-24 20:27:11

标签: swift if-statement optional

   if let phone = participant.phone {
                participantObject["phone"] = phone
            } else { print("Did not add phone") }

我需要打开"字符串?"并且只有在可选项不是nil时才进行赋值

2 个答案:

答案 0 :(得分:3)

由于为Swift字典分配nil值会删除密钥,因此您可以轻松使用此语法:

participantObject["phone"] = participant.phone

除非您想保留现有值。然后没有比你更好的语法。

但是,如果您想在phonenil时分配备用值,请使用nil coalescing运算符。

participantObject["phone"] = participant.phone ?? "n/a"

答案 1 :(得分:2)

你可以简单地使用

participatnObject["phone"] = participant.phone

因为如果"phone"不是participant.phone,此代码只会设置密钥nil的值。唯一的区别是,此代码会移除"phone"密钥的先前值(如果它在那里),而代码不会发生。

如果您还需要在未完成任务的情况下打印消息,那么您的代码非常理想。这稍微短了一点:

participatnObject["phone"] = participant.phone
if participant.phone == nil { print("Did not add phone") }