0
だが、これがモデルから削除するオブジェクトのための私達の機能であるとしましょうか:は、if文
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
})
}
}
質問:
エラーがcatch
節に、実行転送を投げた場合。それはすばらしい。しかし、ステートメント(コードの残りの部分は、通知をキャンセルし、リロードtableView)で何が起こるのですか?これらのステートメントは実行可能なものか単純なものか無視されますか?
とすぐにエラーがこれにスローされるよう'try self.managedObjectContext.save()'を実行すると、残りのコードは実行されず、catchステートメントに入ります。エラーがスローされても依然として文を実行したいですか? –
@ShamasSいいえ!私はエラーがスローされたときには何も言わない。あなたのコメントをありがとう – Mannopson
前の行にエラーがあったので、それらの行は無視されます。それがあなたが望むものであれば、それは起こっていることです、あなたはあなたの質問を言い換えることができますか? –