尝试将 UITextField 文本转换为 Int Xcode 7 时出现错误

When trying to convert a UITextField text to Int Xcode 7 gives me an error

我是编程新手,在网上学习了一些教程后,我决定用 Xcode 7 制作我自己的应用程序,以便能够 运行 我的应用程序在我的 iPhone 上。但是当我尝试从文本字段获取输入数据并将其放入 var 时,它会给我一个错误。我尝试使用以下内容:

var initialChips = 0
var initialBlind = 0

@IBOutlet weak var txtBlind: UITextField!
@IBOutlet weak var txtChips: UITextField!
@IBOutlet weak var doneBtn: UIBarButtonItem!

@IBAction func doneBtn(sender: AnyObject) {

    let initialChips:Int? = Int(txtChips.text)
    let initialBlind:Int? = Int(txtBlind.text)
}

Xcode 会要求放一个“!”在“.text”之后但在这样做之后它给了我一个警告:"Initialization of immutable value 'initialChips' (or 'initialBlind' was never used: consider replacing with assignment to '_'or removing it".

如何为我的 var 设置值?

您应该在右括号之后添加 !,而不是在 .text 之后,如下所示:

let initialChips:Int? = Int(txtChips.text)!

问题是 let initialChips:Int? = Int(txtChips.text) 生成了一个名为 initialChips 的新变量(不同于 class 中的变量)。 letvar 的区别在于 let 是不可变的而 var 不是。你应该这样做:

initialChips = Int(txtChips.text)

UITextField 中的整数分配给您的 class 变量,而不是声明一个新的不可变变量(具有相同的名称)并且不对其进行任何操作。

当然,initialBlind

也是一样

编辑:

尝试以下操作:

@IBAction func doneBtn(sender: AnyObject) {

    if let initialChips = Int(txtChips.text!) {
        self.initialChips = initialChips
    }else {
        self.initialChips = 0
    }

    if let initialBind = Int(txtBind.text!) {
        self.initialBind = initialBind
    }else {
        self.initialBind = 0
    }
}