在插入Core Data之前检查textfield是否为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在插入Core Data之前检查textfield是否为空相关的知识,希望对你有一定的参考价值。
我有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:
这是我在界面上的错误:
任何想法都会对我有所帮助!谢谢 !
答案
一旦调用行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 }
...
以上是关于在插入Core Data之前检查textfield是否为空的主要内容,如果未能解决你的问题,请参考以下文章
SwiftUI Core Data 在 DetailView 中绑定 TextFields
编辑 Core Data 类实例字符串时,SwiftUI List 中的 TextField 出现光标定位错误?