这个想法是当用户点击“确定”时。 UIAlert的选项,我想保存核心数据。但是,我得到了' EXC_BAD_INSTRUCTION'错误,好像对象是零。在存储数据之前,UIAlert将作为确认。
每当我摆脱UIAlert时,只需在“添加数据”时存储数据即可。按下按钮,一切正常。有什么想法吗?
由于
func createAlert(title: String, message: String)
{
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
//create cancel action
let cancel = UIAlertAction(title: "Cancel", style: .cancel, handler: nil)
//create ok action
let ok = UIAlertAction(title: "OK", style: .default, handler: { (action: UIAlertAction) -> Void in print("OK")
//error here....
RestaurantController.storeOrder(name: self.tName.text!, address: self.tAddress.text!, vendor: self.tVendor.text!, price: Double(self.tPrice.text!)!, tip: Double(self.tTip.text!)!, delivFee: Double(self.tDelivFee.text!)!)
self.tName.text = ""
self.tAddress.text = ""
self.tVendor.text = ""
self.tPrice.text = ""
self.tTip.text = "0"
self.tDelivFee.text = "0"
})
alert.addAction(cancel)
alert.addAction(ok)
self.present(alert, animated: true, completion: nil)
}
答案 0 :(得分:0)
听起来你的一个字符串在被转换为Double时失败了。你应该使用一个守卫来确保它们实际上被强制转换为Double,而不是强制施放它们。您将tPrice.text设置为""并且不会成为双重演员。
答案 1 :(得分:0)
我通过在createAlert()函数中创建另一个参数并在使用guard语句后传入order对象来获得我的最终结果。感谢您的建议。