无法通过UIAlertAction存储到Core Data

时间:2017-05-12 18:33:16

标签: core-data swift3

这个想法是当用户点击“确定”时。 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)

}

2 个答案:

答案 0 :(得分:0)

听起来你的一个字符串在被转换为Double时失败了。你应该使用一个守卫来确保它们实际上被强制转换为Double,而不是强制施放它们。您将tPrice.text设置为""并且不会成为双重演员。

答案 1 :(得分:0)

我通过在createAlert()函数中创建另一个参数并在使用guard语句后传入order对象来获得我的最终结果。感谢您的建议。