我有UILabel
,其中包含String
数字的值,例如;
@IBOutlet weak var label: UILabel!
label.text = "5"
然后我尝试将字符串值转换为未包装的Int常量。以前我使用toInt
但现在已经不见了,我试着这样做,
let labelText: String = label.text!
let size: Int! = Int(labelText)
但是大小返回nil
值而不是转换后的值,在这种情况下,它应该是值为Int
的5.有人知道新语法出错了吗?
答案 0 :(得分:3)
您提供的语法应该有效。
可能label.text
设置为使转换失败的其他值。
以下是一些使size
成为nil
的示例:
label.text = "5+"
label.text = "5.0"
是的,即使是“5.0”也会导致转换失败。
明确地投射到Double
并投回Int
应该有效。
如果你不喜欢处理演员表(或者你不知道文字的格式),你可以使用NSNumberFormatter
来避免它,这是一个例子:
let formatter = NSNumberFormatter()
formatter.numberStyle = .DecimalStyle
if let number = formatter.numberFromString(labelText) {
// number is an instance of NSNumber
size = number.integerValue
}
请注意,创建NSNumberFormatter
是一项昂贵的操作,请尽可能将其缓存。
答案 1 :(得分:0)
let size = Int(labelText.text) - Int
让dsize = Double(labelText.text) - double
如果要在稍后的函数中使用它,则可能必须打开标签。