![](/img/trans.png)
[英]Swift converting string to double with numberformatter returns nil
[英]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.