swift - 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)
解决方案
而不是每次为特定用途创建一个新的时都使用self.items.itemsData[item].title
相同的,每次调用它时都会创建一个新的唯一标识符。您可能可以将此唯一标识符与if 结合使用,这对于您的方案更准确。UNNotificationRequest
item
UUID().uuidString
title
let request = UNNotificationRequest(identifier: self.items.itemsData[item].title + UUID().uuidString, content: content, trigger: trigger)
推荐阅读
- rxjs - 进行 Http Request Observation 并返回 anm Observable 和结果
- html - 如何将屏幕分成3个水平div
- mongodb - Grails 4中mongo域类中的自动装配问题
- c# - 我们如何在 C# 的实体框架中从数据库中选择单列
- apache-kafka - 在 Kafka 中批量处理大量数据?
- authentication - 如何在 Hashicorp 的 Vault 中管理代币
- flutter - 将日历与数据库连接
- javascript - CKEditor 5 改变高度事件
- excel - 去掉 VBA 连接文本框中的最后四个字符
- usb - 如何在 Qemu 4.2.0 上热插拔 USB 设备?