如何在Swift中压缩解包多个选项?

tri*_*sta 4 if-statement swift

我想打开这6个可选变量,如果它们为null,我想给它们一个空字符串值.这样我就可以将这些变量打包到一个发送到API的参数数组中.

我仍然是Swift的初学者,这是我理解如何实现这一点的唯一最简单的方法,但我内心的编码器说这看起来多余而且糟糕,因为****.

有人可以帮我压缩这个或使其更简单吗?

    if let fbEmail = self.fbEmail {

    }else{
        self.fbEmail = ""
    }

    if let fbDob = self.fbDob {

    }else{
        self.fbDob = ""
    }

    if let fbGender = self.fbGender {

    }else{
        self.fbGender = ""
    }
    if let fbUserIp = self.fbUserIp {

    }else{
        self.fbUserIp = ""
    }
    if let fbFacebookId = self.fbFacebookId {

    }else{
        self.fbFacebookId = ""
    }
    if let fbFacebookAccessToken = self.fbFacebookAccessToken {

    }else{
        self.fbFacebookAccessToken = ""
    }
Run Code Online (Sandbox Code Playgroud)

Cod*_*ent 8

你可以用6行代码完成:

self.fbEmail  = self.fbEmail  ?? ""
self.fbDob    = self.fbDob    ?? ""
self.fbGender = self.fbGender ?? ""
self.fbUserIp = self.fbUserIp ?? ""
self.fbFacebookId = self.fbFacebookId ?? ""
self.fbFacebookAccessToken = self.fbFacebookAccessToken ?? ""
Run Code Online (Sandbox Code Playgroud)

编辑:??语法是什么:它是一个快捷方式"如果nil指定另一个值":

let c = a ?? b
Run Code Online (Sandbox Code Playgroud)

将分配c = a如果a != nil,否则c = b.