Lassen Sie uns sagen, dass dies unsere Funktion aus dem Modell zum Löschen Objekte ist:Die do-Anweisung
func delete(indexPath: IndexPath) {
let managedObject = self.fetchedResultsController.object(at: indexPath)
self.managedObjectContext.delete(managedObject)
do {
// Save changes
try self.managedObjectContext.save()
// Cancel the notification
let center = UNUserNotificationCenter.current()
center.removeDeliveredNotifications(withIdentifiers: [managedObject.uuid!])
center.removePendingNotificationRequests(withIdentifiers: [managedObject.uuid!])
// Reload tableView
self.tableView.reloadData()
} catch {
let alertController = UIAlertController.init(title: "Error", message: "We are sorry! Unknown error occured...", preferredStyle: .alert)
alertController.addAction(UIAlertAction.init(title: "Close", style: .default, handler: { (action) in
// Completion handler
}))
self.present(alertController, animated: true, completion: {
// Completion block
})
}
}
Frage:
Wenn ein Fehler ausgelöst, geht die Ausführung zu den catch
Klauseln. Das ist schön. Aber was passiert mit den Anweisungen (Rest des Codes, Abbrechen der Benachrichtigung und Reload tableView)? Diese Anweisungen sind noch ausführbar oder einfach ignoriert?
sobald der Fehler in dieser ausgelöst wird, Zeile 'try self.managedObjectContext.save()', der Rest des Codes wird nicht ausgeführt und in die catch-Anweisung übernommen. Möchten Sie die Anweisungen trotzdem ausführen, selbst wenn ein Fehler auftritt? –
@ShamasS Nein! Ich brauche keine Anweisungen, wenn ein Fehler ausgelöst wird. Vielen Dank für Ihren Kommentar. – Mannopson
Diese Zeilen werden ignoriert, da in der vorherigen Zeile ein Fehler aufgetreten ist. Wenn es das ist, was du willst und das passiert, könntest du deine Frage anders formulieren? –