尝试根据标识符删除多个本地通知
Posted
技术标签:
【中文标题】尝试根据标识符删除多个本地通知【英文标题】:Trying to remove multiple local notifications based on the Identifier 【发布时间】:2017-01-30 22:51:36 【问题描述】:我有一个可以创建用户的应用。这些用户中的每一个都可以创建一个对象。我让每个用户都能够在该对象上设置本地通知。我对通知标识符的命名约定是使用人员姓名+他们创建的对象的名称。我想做的是从应用程序中删除该人时删除所有通知。
我需要以某种方式遍历该人的所有对象,并使用该名称来识别我需要删除的通知。
这是我正在尝试的
// remove local notifications
let center = UNUserNotificationCenter.current()
let personToSerch = person.name!
var filterdItemsArray = [String]()
center.getPendingNotificationRequests (notifications) in
print("Count: \(notifications.count)")
func filterContentForSearchText(searchText: String)
filterdItemsArray = notifications.filter item in
return item.contains(searchText)
filterContentForSearchText(searchText: personToSerch)
print("\(filterdItemsArray.count) count of the filter array")
center.removePendingNotificationRequests(withIdentifiers: filterdItemsArray)
它似乎不起作用,我的返回行抛出一个错误,内容为:UNNotificaionRequest 类型的值没有包含成员。
【问题讨论】:
【参考方案1】:检查以下代码是否适合您。
let center = UNUserNotificationCenter.current()
let personToSerch = person.name!
center.getPendingNotificationRequests (notifications) in
for item in notifications
if(item.identifier.contains(personToSerch))
center.removePendingNotificationRequests(withIdentifiers: [item.identifier])
【讨论】:
对不起,我没有听从你的回答,idtodelete 是从哪里来的? idtodelete 是您要在案例中删除的 personToSerch。 我更新了我的代码以向您展示我想要完成的工作。我需要找到与该人相关的所有通知。可能不止一个,我应该能够通过使用人员姓名作为该数组的谓词来创建一个数组。 嘿,我不明白你为什么需要过滤数组。 'UNUserNotificationCenter.current().removePendingNotificationRequests(withIdentifiers: ["Person_name"])' 这不是直接对你有用吗?我猜在安排通知时您已经添加了可以直接使用的用户信息。 我遇到的问题是,每个人都可以有多个条目,每个条目都可以有一个本地通知。我如何命名它们是 personName+NameofEntry。这就是为什么我希望根据 personName 过滤数组的原因,我如何获得以该名称开头的所有通知。这有意义吗?以上是关于尝试根据标识符删除多个本地通知的主要内容,如果未能解决你的问题,请参考以下文章