将字符串值从UILabel转换为Int将返回nil | Swift 2 / Xcode 7

时间:2015-10-24 22:20:07

标签: ios swift

我有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.有人知道新语法出错了吗?

2 个答案:

答案 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

如果要在稍后的函数中使用它,则可能必须打开标签。