我正在尝试获取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,并且没有得到错误,它工作得很好。
答案 0 :(得分:0)
请在您的界面生成器中检查UITextField是否正确链接到您的" entryAmount" IBOutlet中。可能是因为它们没有正确连接,这就是为什么在运行时值为零的原因。
答案 1 :(得分:0)
我可能错了,但你的问题似乎是你在确定范围时遇到了麻烦。您在函数中声明的任何变量仅限于该函数。
在saveNewButtonTapped中声明金额表示金额仅在该函数中设置。在另一个函数中使用金额将导致金额为零。如果要在函数之间使用变量,则需要在函数之外声明它们。
在示例中,我有var runningAmount。在这个例子中,如果我按下调用pressAnotherButton的按钮,我会得到同样的致命错误,因为我在设置之前解开了self.runningAmount。但是如果我按下调用saveNewButtonTapped的按钮,即使文本字段中没有任何内容,也按下调用pressAnotherButton的按钮,我得到照片中的输出。