UITextField总是导致nil

时间:2015-10-14 21:14:05

标签: swift uitextfield textfield

我正在尝试获取UITextField的信息,然后使用swift 2.0和Xcode 7重用UITextField中的数据。但每次运行应用程序时,应用程序崩溃并说:

  

致命错误:在解包可选值时意外发现nil

即使文本字段中有某些内容。 有人知道如何解决这个问题吗?

这是我的代码的外观:

@IBOutlet weak var entryAmount: UITextField! //TextField declaration
@IBAction func saveNewButtonTapped(sender: UIBarButtonItem) {
        //update overall amount
        let amount: String? = self.entryAmount.text! //Throws the error at this point
        self.viewController.currentValue += amount
}

在另一个函数中,我写了同样的东西(“让amount:String?= entryAmount.text!”),当我打印“amount”时,它显示了正确的结果。但是一旦我尝试进一步使用它,“金额”总是设置为零,即使很难,它总是在开头打印出正确的结果。

我遇到了与DatePicker相同的事情,切换和更新按钮文本。

有人知道有什么可以帮助我吗? - 谢谢

顺便说一句,我对swift和Xcode都很陌生。

更新:可能是因为TextField位于ContainerView中吗?

更新二:我非常确定问题是因为ContainerView。我尝试了一个不在容器视图中的TextField,并且没有得到错误,它工作得很好。

2 个答案:

答案 0 :(得分:0)

请在您的界面生成器中检查UITextField是否正确链接到您的" entryAmount" IBOutlet中。可能是因为它们没有正确连接,这就是为什么在运行时值为零的原因。

答案 1 :(得分:0)

Sample Code

我可能错了,但你的问题似乎是你在确定范围时遇到了麻烦。您在函数中声明的任何变量仅限于该函数。

在saveNewButtonTapped中声明金额表示金额仅在该函数中设置。在另一个函数中使用金额将导致金额为零。如果要在函数之间使用变量,则需要在函数之外声明它们。

在示例中,我有var runningAmount。在这个例子中,如果我按下调用pressAnotherButton的按钮,我会得到同样的致命错误,因为我在设置之前解开了self.runningAmount。但是如果我按下调用saveNewButtonTapped的按钮,即使文本字段中没有任何内容,也按下调用pressAnotherButton的按钮,我得到照片中的输出。