在Swift中将Int转换为String并删除可选的包装?

Wil*_*son 1 swift

我试图转换Int?为String并将其分配给标签而不包括可选文本.我目前有:

struct Choice: Mappable{

    var id: String?
    var choice: String?
    var questionId: String?
    var correct: Bool?
    var responses: Int?


    init?(map: Map) {

    }


    mutating func mapping(map: Map) {
        id  <- map["id"]
        questionId  <- map["questionId"]
        choice <- map["choice"]
        correct <- map["correct"]
        responses <- map["responses"]

    }


}
Run Code Online (Sandbox Code Playgroud)

在访问它的类中

var a:String? = String(describing: self.currentResult.choices?[0].responses)
        print("\(a!)")
Run Code Online (Sandbox Code Playgroud)

输出是: Optional(1)

我如何只输出1并删除可选文本?

dfr*_*fri 5

a是一个Optional,所以你需要事先解开它应用String通过Int初始化它.此外,b不必真的是一个Optional情况下,你如想为它提供一个默认值,其中案件anil.

let a: Int? = 1
let b = a.map(String.init) ?? "" // "" defaultvalue in case 'a' is nil
Run Code Online (Sandbox Code Playgroud)

或者,如果目的是将可能存在且可能可String转换的值分配给a atext属性UILabel,则可以使用可选绑定将成功转换分配给标签:

let a: Int? = 1
if let newLabelText = a.map(String.init) {
    self.label.text = newLabelText
}
Run Code Online (Sandbox Code Playgroud)