/ / Löschen von Benachrichtigungen in Swift 3 - iOS, Swift

Löschen Sie Benachrichtigungen schnell in 3 - ios, zügig

Hallo, ich arbeite an einer App, die mir gibtBenachrichtigung für eine bestimmte Uhrzeit und ein bestimmtes Datum und wird in einem TableViewController angezeigt. Ich habe also mehrere Benachrichtigungen in der Tabelle. Wie lösche ich eine bestimmte Benachrichtigung? Wenn ich die Zeile lösche, die die Benachrichtigung enthält, wird sie immer noch nicht gelöscht.

override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
let context = getContext()
if editingStyle == .delete {
// Delete the row from the data source
context.delete(names[(indexPath as NSIndexPath).row])

let a = (names[(indexPath as NSIndexPath).row])

let center = UNUserNotificationCenter.current()
let notifToDelete = a.name

center.getPendingNotificationRequests { (notifications) in
print(notifications)
for item in notifications {
if(item.identifier.contains(notifToDelete!))
{
center.removePendingNotificationRequests(withIdentifiers: [item.identifier])

}
}
}

do {
try context.save ()
}catch {
let saveError = error as NSError
print(saveError)
}
names.remove(at: (indexPath as NSIndexPath).row)

tableView.deleteRows(at: [indexPath], with: .automatic)

Dies hat keinerlei Auswirkungen. Die Benachrichtigung wird weiterhin zur festgelegten Zeit ausgeführt. (Die Benachrichtigung wird in einem anderen View Controller festgelegt.)

Antworten:

3 für die Antwort № 1

Entfernen Sie diesen Block mit unnötigem Code:

    center.getPendingNotificationRequests { (notifications) in
print(notifications)
for item in notifications {
if(item.identifier.contains(notifToDelete!))
{
center.removePendingNotificationRequests(withIdentifiers: [item.identifier])

}
}
}

Tun Sie dies stattdessen:

center.removePendingNotificationRequests(withIdentifiers: [notifToDelete])