1

我需要将标签的更改文本保存为变量,但如果编写以下代码:

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'

我应该使用什么代码?

4

3 回答 3

1
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.
        }
    }
于 2018-12-01T09:24:42.277 回答
1

2 这样做的方法

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

2: let warn = Int(self.dyn.text!)!
于 2018-12-01T09:31:39.690 回答
1

好的。因为 String 可以是"123" 左右"Hello,world"它可以是数字或字符串文本

当您使用它 Int(String)时,初始化程序可能会失败,它会返回一个 optional 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)
  }
于 2018-12-01T09:37:22.563 回答