2017-01-14 7 views
0

Я пытаюсь создать список todo с coreData, моя цель - иметь всплывающее уведомление об ошибке, если пользователь пытается просто нажать кнопку «добавить», не введя текст в текстовое поле. В настоящее время у меня появилось всплывающее уведомление, но после того, как я отклонил уведомление, а затем добавьте текст в текстовое поле и нажмите кнопку «Добавить», приложение выйдет из строя.Если ошибка оператора

@IBAction func addBtnTaskPressed(_ sender: Any) { 
    let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext 

    let task = Task(context: context) 

    //have to add an if let here. 
    if let text = textField.text, !text.isEmpty{ 
     task.name = textField.text 
     //save data to coredata 
     (UIApplication.shared.delegate as! AppDelegate).saveContext() 
    } else { 
    let alert = UIAlertController(title: "Error:", message: "Cannot Add Empty Task", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.default, handler: nil)) 
    self.present(alert, animated: true, completion: nil) 
    } 

} 
+0

Какая ошибка? – Connor

+0

Где он падает? Какая линия? Что такое сообщение об ошибке? – Pierce

+0

fatalError ("Unresolved error \ (nserror), \ (nserror.userInfo)") переносит меня в эту строку кода в AppDelegate.swift – user7417272

ответ

0

Я думаю, что вы не сохраняете coreData должным образом. Попробуйте (я его еще не проверял)

@IBAction func addBtnTaskPressed(_ sender: Any) { 
    let appDelegate = UIApplication.shared.delegate as! AppDelegate 
    let context = appDelegate.managedObjectContext 
    let entity = NSEntityDescription.entity(forEntityName: "Task", in: context) 
    let task = NSManagedObject(entity: entity!, insertInto: context) as! Task 


    //have to add an if let here. 
    if let text = textField.text, !text.isEmpty{ 
    task.name = textField.text 
    //save data to coredata 
     do { 
      try context.save() 
      print("saved!") 
     } catch let error as NSError { 
     print("Could not save \(error), \(error.userInfo)") 
     }   
    } else { 
    let alert = UIAlertController(title: "Error:", message: "Cannot Add Empty  Task", preferredStyle: UIAlertControllerStyle.alert) 
    alert.addAction(UIAlertAction(title: "Continue", style: UIAlertActionStyle.default, handler: nil)) 
    self.present(alert, animated: true, completion: nil) 
    } 
} 
+0

Спасибо, но это решение не сработало, проблема не в том, чтобы сохранить его в основных данных, потому что, если я что-то ввожу в текстовое поле, он сохраняет его в coreData, но если я намеренно добавьте задачу без какого-либо текста и всплывьте «предупреждение», отпустите «предупреждение», а затем попробуйте добавить текст в текстовый поле, а затем добавьте задачу в coreData, с которой оно сработает. – user7417272

 Смежные вопросы

  • Нет связанных вопросов^_^