swift中如何将标签的文本保存为整型变量?

How can save the text of the label as an integer variable in swift?

我需要将我的标签的变化文本保存为一个变量,但是如果写下​​面的代码:

var warn = Int(self.dyn.text)

它说:

Value of optional type 'String?' must be unwrapped to a value of type 'String'
Coalesce using '??' to provide a default when the optional value contains 'nil'
Force-unwrap using '!' to abort execution if the optional value contains 'nil'

我应该使用什么代码?

var warn = Int(self.dyn.text ?? "") ?? 0

您必须提供一个默认值,以防无法转换为 Int。您还必须确保文本值不为零。

看看可选链接和可选绑定

另一种方法是:

    if let dynText = self.dyn.text {
        if let warn = Int(dynText) {

            // warn is an available int variable here.
        }
    }

2 种方法

1: let warn = Int(self.dyn.text ?? "") ?? 0

2: let warn = Int(self.dyn.text!)!

很好。因为 String 可以是 "123" 或者 "Hello,world" 所以它可以是数字或者 String text

当你使用这个 Int(String) 初始化器可能会失败,它 returns 一个可选的 Int,而不是 Int

例子

let possibleNumber = "123"
let convertedNumber = Int(possibleNumber)
// convertedNumber is inferred to be of type "Int?", or "optional Int"

所以你必须打开它

像那样

   // unwrap text if TextField is not `!`  and then unwrap text when you convert to Int
    if let dynText = self.dyn.text , let warn = Int(dynText) {
       print(warn)
  }