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

标签 ios swift

我有一个 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 被设置为一些其他值,这会使转换失败。

下面是一些可以使 sizenil 的例子:

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/

相关文章:

objective-c - 有没有办法调整 iPhone 中模态视图屏幕的大小

iOS 钥匙串(keychain)值无

ios - 如何让 iPhone X home bar 横屏双击?

ios - Swift CollectionViewCell 的框架与其 CollectionView 不同

ios - JSONSerialization可与iOS模拟器一起使用,但在使用手机时出现错误“对下标的含糊使用”

ios - UIBarButtonItem -> 发送到实例的无法识别的选择器

ios - 将数据从标签栏 Controller 传输到 ViewController

ios - UIScrollView 相对于子 ViewController 的偏移量

ios - Alamofire - 未进行代码签名,因为其设置未在 Xcode 8 中指定开发团队

ios - NSLayoutManager boundingRectForGlyphRange 关闭一些点