繁体   English   中英

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

[英]Converting String value from UILabel to Int returns nil | Swift 2 / Xcode 7

我有一个UILabel ,其中包含一个数字的String值,例如;

@IBOutlet weak var label: UILabel!

label.text = "5"

然后我尝试将字符串值转换为未包装的Int常量。 以前我习惯toInt但现在已经不见了,我试着这样做,

let labelText: String = label.text!
let size: Int! = Int(labelText)

但是大小返回的是nil值而不是转换后的值,在这种情况下,它应该是值为5的Int 。有人知道新语法出错了吗?

您提供的语法应该有效。

也许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是一项昂贵的操作,请尽可能缓存它。

let size = Int(labelText.text) - Int

让dsize = Double(labelText.text) - 加倍

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM