SWiftUI-在本地通知中访问UUID.uuidString标识符

时间:2020-08-06 13:44:27

标签: swift core-data swiftui uilocalnotification

添加后如何访问通知的UUID.uuidString标识符?假设我要删除该通知,该怎么称呼?

我不能对一个项目使用唯一的字符串,因为在不同的Core Data实体中,我可能在不同的时间有两个通知,如果我使用on作为字符串,它将影响同一项目的所有通知。

proc power; 
    onewayanova 
        test       = overall
        groupmeans = 1814120 | 1344300 | 953580 | 1352900
        stddev     = 1879922.09 969317.15 441433.68 970670.65
        npergroup  = 3 4 5 4
        power      = .
    ;
run;

2 个答案:

答案 0 :(得分:1)

使用UUID.init().uuidString对象创建唯一标识符,并在创建新通知时将其保存到managedObject中,如下所示。

// A unique identifier
let identifier = UUID.init().uuidString

// Managed Object
let managedObject = Notifications(context: context)
managedObject.setValue(identifier, forKey: "identifier")
//...

// Notification Content
let content = UNMutableNotificationContent.init()
//...

let request = UNNotificationRequest(identifier: identifier, content: content, trigger: trigger)
//...

然后您可以随时取消通知。

context.delete(managedObject)
if context.hasChanges {
    do {
        // Cancel the registered notification with given identifier
        if let identifier = managedObject.value(forKey: "identifier") as? String {
            let center = UNUserNotificationCenter.current()
            center.removeDeliveredNotifications(withIdentifiers: [identifier])
            center.removePendingNotificationRequests(withIdentifiers: [identifier])
        }
        try context.save()
    } catch {
        fatalError()
    }
}

注意:这是不可重复的通知内容。

答案 1 :(得分:1)

由于要在testData中添加与特定元素相对应的本地通知,因此可以向attribute对象Core Data添加新的testData并将其命名为{{ 1}}。重新创建notificationIdentifier核心数据实体的模型,然后在将testData实体保存到核心数据之前,设置testData值。

notificationIdentifier

您可以在此处获取特定let notificationIdentifier = UUID().uuidString let request = UNNotificationRequest(identifier: notificationIdentifier, content: content, trigger: trigger) //... UNUserNotificationCenter.current().add(request) //... testEntity.notificationIdentifier = notificationIdentifier 的{​​{1}},并从标识符中删除旧的本地通知,并使用新的notificationIdentifier创建新的本地通知,并更新新的{{ 1}}到核心数据testEntity