0

一意の識別子を使用して通知をスケジュールしているため、通知ごとに新しい文字列を作成する必要はありません。これはすべてスケジューリングにはうまく機能しますが、問題はそれらをキャンセルしようとすることにあります。

これは、通知をスケジュールするための私のコードです...

    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 を作成することについて、何か考え/提案はありますか?

4

1 に答える 1