我正在尝试将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"]
}
}
在访问它的班级
var a:String? = String(describing: self.currentResult.choices?[0].responses)
print("\(a!)")
,输出为:
Optional(1)
如何只输出1
并删除可选文字?
答案 0 :(得分:5)
a
是Optional
,因此您需要先将String
Int
初始化程序应用于其中,然后再展开它。另外,如果您b
Optional
,则a
无需nil
。想要为let a: Int? = 1
let b = a.map(String.init) ?? "" // "" defaultvalue in case 'a' is nil
为String
的情况提供默认值。
a
或者,如果目的是将可能存在且可能text
- 可转换的UILabel
值分配到let a: Int? = 1
if let newLabelText = a.map(String.init) {
self.label.text = newLabelText
}
的{{1}}属性,则可以指定使用可选绑定成功转换为标签:
select gsm.*
from (select gsm.*, row_number() over (partition by mobile_no order by usage_date_time desc) as seqnum
from from gsm_usage gsm
) gsm
where seqnum = 1;
答案 1 :(得分:0)
为什么不呢?
let a : Int = 1
var b = "\(a)"
print(b)
所以
$ swift
[ 9> let a : Int = 1
a: Int = 1
[ 10> var b = "\(a)"
b: String = "1"
[ 11> print(b)
1
顺便提一下还有其他选项,比如这个
12> var c = a.description
c: String = "1"
13> print(c)
1