首页 > 解决方案 > SwiftUI - 具有多个核心数据实体的本地通知标识符

问题描述

我有多个核心数据实体,一个用于一周中的每一天,每次我在其中一个中添加一个新项目时,我都想触发该特定项目的本地通知。由于我可以在多个实体中添加相同的项目,我如何为每个实体设置一个唯一标识符?

我使用该项目的标题作为标识符,因为它们都是不同的,但是如果我在两个实体中添加相同的标题,那么它将显示添加的最后一个项目的唯一通知,因为它将替换旧的和我想要的是在不同的实体中对相同的项目有不同的通知。

这是我的本地通知的实际代码

let content = UNMutableNotificationContent()
content.title = self.items.itemsData[item].title
content.body = "Notification"
content.sound = UNNotificationSound.default
                                            
var dateComponents = DateComponents()
dateComponents.weekday = 2
dateComponents.hour = 8
dateComponents.minute = 00
                                            
let trigger = UNCalendarNotificationTrigger(dateMatching: dateComponents, repeats: true)
                                            
let request = UNNotificationRequest(identifier: self.items.itemsData[item].title, content: content, trigger: trigger)
                                            
UNUserNotificationCenter.current().add(request)

标签: swiftcore-dataswiftuiuilocalnotificationidentifier

解决方案


而不是每次为特定用途创建一个新的时都使用self.items.itemsData[item].title相同的,每次调用它时都会创建一个新的唯一标识符。您可能可以将此唯一标识符与if 结合使用,这对于您的方案更准确。UNNotificationRequestitemUUID().uuidStringtitle

let request = UNNotificationRequest(identifier: self.items.itemsData[item].title + UUID().uuidString, content: content, trigger: trigger)

推荐阅读