【问题标题】:Check if textfield is empty before to insert into CoreData在插入CoreData之前检查文本字段是否为空
【发布时间】:2018-06-26 12:29:33
【问题描述】:

我有 4 个 UITextField 和一个 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 !")
            }
        }

这是我的核心数据:

这是我在界面上的错误:

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

【问题讨论】:

    标签: ios swift uitextfield swift4


    【解决方案1】:

    只要调用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 }
        ...
    

    【讨论】:

      猜你喜欢
      • 2021-06-27
      • 1970-01-01
      • 2016-11-04
      • 1970-01-01
      • 2021-07-01
      • 2015-12-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多