一意の識別子を使用して通知をスケジュールしているため、通知ごとに新しい文字列を作成する必要はありません。これはすべてスケジューリングにはうまく機能しますが、問題はそれらをキャンセルしようとすることにあります。
これは、通知をスケジュールするための私のコードです...
let notifIdentifier = TaskManager.notification2.userInfo.description as String!
let trigger = UNCalendarNotificationTrigger(dateMatching: components , repeats: true)
let request = UNNotificationRequest(identifier: notifIdentifier! , content: TaskManager.notification2, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
これは、通知をキャンセルするためのコードです...
// Deletion of Cells ...
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let managedObject: NSManagedObject = frc.object(at: indexPath) as! NSManagedObject
context.delete(managedObject)
if tableView == TaskTableViews {
let itemController = TaskManager()
let nItem: List = frc.object(at: indexPath) as! List
itemController.nItem = nItem
UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: [itemController.notifIdentifier!] )
それらをキャンセルしようとすると、非常に当たり外れがあります。識別子を通常の文字列に変更してコードをテストしたところ、すべてが正常に機能するため、間違いなく一意の識別子です。
新しいタスク/通知ごとに一意の ID を作成することについて、何か考え/提案はありますか?