我有一个 UILabel
,它包含一个数字的 String
值,例如;
@IBOutlet weak var label: UILabel!
label.text = "5"
然后我尝试将字符串值转换为未包装的 Int 常量。以前我使用 toInt
但现在已经不存在了,我尝试这样做,
let labelText: String = label.text!
let size: Int! = Int(labelText)
然而 size 返回一个 nil
值而不是转换后的值,在这种情况下它应该是一个 Int
值 5。有人知道我哪里错了吗使用新语法?
最佳答案
您提供的语法应该有效。
可能 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
是一项开销很大的操作,请尽可能缓存它。
关于ios - 将字符串值从 UILabel 转换为 Int 返回 nil | swift 2/Xcode 7,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33323979/