Итак, я использую Swift 5
и работаю с core data
. Я пытаюсь добавить проверку к текстовым полям через UIAlertView
.
Чтобы прояснить, что мой код уже делает:
- Пользователь нажимает кнопку, после которой появляется всплывающий интерфейс библиотеки фотографий iOS.
- После выбора фотографии *Появляется 1011 * и запрашивает два введенных текста в двух текстовых полях.
- Как только это будет сделано, данные отправляются в базу данных и отображают изображение и тексты, которые я ввел на
TableViewCell
Проблема?
При отправке пустого текстового поля нет запроса пользователю ввести текст. Он будет отображать изображение только в UITableViewCell
без каких-либо текстов, что является очевидным результатом при вводе без строк.
Чего я хочу достичь?
Чтобы добавить пользователю сообщение проверки, когда он не вводит текст, и отменить процесс отправки в базу данных.
Что я уже пробовал?
Пожалуйста, смотрите ниже для кода. Примечание: отправка изображения и текстов в базу данных уже работает, моя проблема связана с проверкой текстового поля
func createBrandItem (with image:UIImage){
let brandItem = Brand(context: managedObjectContext)
brandItem.image = NSData(data: image.jpegData(compressionQuality: 0.3)!) as Data
let inputAlert = UIAlertController(title: "New Brand", message: "Enter an item and a brand.", preferredStyle: .alert)
inputAlert.addTextField { (textfield:UITextField) in
textfield.placeholder = "Item"
}
inputAlert.addTextField { (textfield:UITextField) in
textfield.placeholder = "Brand"
}
inputAlert.addAction(UIAlertAction(title: "Save", style: .default, handler: { (action:UIAlertAction) in
let itemTextField = inputAlert.textFields?.first
let productTextField = inputAlert.textFields?.last
if (itemTextField?.text!.isEmpty)! || (productTextField?.text!.isEmpty)! {
let alertBlankInput = UIAlertController(title: "Blank Input", message: "Please don't leave the textfields empty.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertAction.Style.cancel)
alertBlankInput.addAction(okAction)
self.present(alertBlankInput, animated: true, completion: nil)
}
if itemTextField?.text != "" && productTextField?.text != "" {
brandItem.item = itemTextField?.text
brandItem.brand = productTextField?.text
do{
try self.managedObjectContext.save()
self.loadData()
}
catch{
print("Could not save data \(error.localizedDescription)")
}
}
}))
inputAlert.addAction(UIAlertAction(title: "Cancel", style: .cancel, handler: nil))
if self.presentedViewController == nil {
self.present(inputAlert, animated: true, completion: nil)
}
else {
self.dismiss(animated: false, completion: nil)
self.present(inputAlert, animated: true, completion: nil)
}
}
Разбивка кода
Фрагмент нижеэто то, что я пытался добавить к функции createBrandItem
. Когда я добавляю этот оператор if
при отладке приложения, он использует этот условный оператор, но также завершает условный оператор, добавляя его в базу данных.
if (itemTextField?.text!.isEmpty)! || (productTextField?.text!.isEmpty)! {
let alertBlankInput = UIAlertController(title: "Blank Input", message: "Please don't leave the textfields empty.", preferredStyle: .alert)
let okAction = UIAlertAction(title: "OK", style: UIAlertAction.Style.cancel)
alertBlankInput.addAction(okAction)
self.present(alertBlankInput, animated: true, completion: nil)
}
Приведенный ниже код является фрагментом, который добавляет данныев базу данных.
let brandItem = Brand(context: managedObjectContext)
brandItem.image = NSData(data: image.jpegData(compressionQuality: 0.3)!) as Data
if itemTextField?.text != "" && productTextField?.text != "" {
brandItem.item = itemTextField?.text
brandItem.brand = productTextField?.text
do{
try self.managedObjectContext.save()
self.loadData()
}
catch{
print("Could not save data \(error.localizedDescription)")
}
}
Сводка
Как мне поступить, если текстовые поля пусты и останавливает процесс отправки в базу данных