在插入Core Data之前检查textfield是否为空

问题描述 投票:0回答:1

我有4个UITextFields和一个UIButton(保存按钮)。当我按下“保存”按钮时,它应该将我在文本字段中的内容添加到CoreData中,并在UITableView中填充数据。但问题是当我没有在TextFields中放任何东西时我按下Save将一个空对象添加到我的CoreData中,也添加到我的UITableView中。

这是我的代码:

@IBOutlet weak var productNameTextfield: UITextField!

    @IBOutlet weak var productCategoryTextField: UITextField!

    @IBOutlet weak var productDescriptionTextfield: UITextField!

    @IBOutlet weak var productPriceTextfield: UITextField!

       // Func to insert data from TextFields into DB
        func insertProduct(){

            let product = Product(context: context)
            let productUUID = UUID().uuidString
            product.id = productUUID

            if (productNameTextfield.text?.trimmingCharacters(in: .whitespaces).isEmpty)! {
                showAlertWith(title: "Name required", message: "Product name is required !")
            }
            else if (productCategoryTextField.text?.trimmingCharacters(in: .whitespaces).isEmpty)! {
                showAlertWith(title: "Category required", message: "Product Category required !")
            }
            else if (productDescriptionTextfield.text?.trimmingCharacters(in: .whitespaces).isEmpty)! {
                showAlertWith(title: "Description required", message: "Product Description required !")
            }
            else if (productPriceTextfield.text?.trimmingCharacters(in: .whitespaces).isEmpty)! {
                showAlertWith(title: "Price required", message: "Product Price required !")
            }
            else{
                guard let productPrice = (productPriceTextfield.text ?? "").isEmpty ? "0.00" : productPriceTextfield.text else { return }
                product.name = self.productNameTextfield.text!
                product.category = self.productCategoryTextField.text!
                product.prodDescription = self.productDescriptionTextfield.text!
                product.price = Float(productPrice)!
                appDelegate.saveContext()
                resetAllFields()
                showAlertWith(title: "Done", message: "Product was added with success !")
            }
        }

这是我的CoreData:

enter image description here

这是我在界面上的错误:

enter image description here

任何想法都会对我有所帮助!谢谢 !

ios swift uitextfield swift4
1个回答
3
投票

一旦调用行Product(context: context),就会创建CoreData对象并将其插入上下文中。将这些行移动到else块的开头:

    ...
} else {
    let product = Product(context: context)
    let productUUID = UUID().uuidString
    product.id = productUUID

    guard let productPrice = (productPriceTextfield.text ?? "").isEmpty ? "0.00" : productPriceTextfield.text else { return }
    ...
© www.soinside.com 2019 - 2024. All rights reserved.