使用UIAlert删除tableView行时出现SIGABRT错误

时间:2018-06-25 10:13:50

标签: swift xcode uialertcontroller

我正在尝试使用commit editstyle func删除tableView中的一行。当用户删除一行时,我希望显示UIAlertController。 我在没有警报的情况下尝试了该方法,该方法有效。 这是我的commit editStyle函数:

 func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
            if editingStyle == .delete {
                let sheet = UIAlertController(title: "Diesen Verein löschen?", message: "Wollen Sie diesen Verein für immer löschen?", preferredStyle:.alert)
                present(sheet, animated: true, completion: nil)
                let action1 = UIAlertAction(title: "Löschen", style: .default , handler: { (action) in
                    self.deleteClub(at: indexPath)
                })
                let action2 = UIAlertAction(title: "Abbrechen", style: .default, handler: { (action) in
                    self.dismiss(animated: true, completion: nil)
                })
                sheet.addAction(action1)
                sheet.addAction(action2)

                present(sheet, animated: true, completion: nil)
            }
        }

这是我的删除功能,但我不认为这是一个错误,因为它可以在没有警报的情况下工作。

func deleteClub(at indexPath: IndexPath){
            let club = clubs[indexPath.row]

            guard let managedContext = club.managedObjectContext else {
                return
            }
            managedContext.delete(club)

            do {
                try managedContext.save()

                clubs.remove(at: indexPath.row)

                tableViewClub.deleteRows(at: [indexPath], with: .automatic)
            } catch {
                print("Could not delete")

                tableViewClub.reloadRows(at: [indexPath], with: .automatic)
            }
        }

0 个答案:

没有答案