SwiftUI - идентификатор локальных уведомлений с несколькими сущностями Core Data - PullRequest
0 голосов
/ 05 августа 2020

У меня есть несколько сущностей Core Data, по одному на каждый день недели, и каждый раз, когда я добавляю новый элемент в один из них, я хочу инициировать локальное уведомление для этого c элемента. Поскольку я могу добавить один и тот же элемент в несколько объектов, как я могу установить уникальный идентификатор для каждого из них?

Я использовал заголовок этого элемента в качестве идентификатора, потому что все они разные, но если я добавлю один и тот же заголовок в два объекта, он отобразит уникальное уведомление о последнем добавленном элементе, потому что он заменит старый, и я хочу иметь разные уведомления с одним и тем же элементом в разных объектах.

Это мой актуальный код местного уведомления

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)

1 Ответ

1 голос
/ 05 августа 2020

Вместо использования self.items.itemsData[item].title, которое будет одинаковым каждый раз, когда создается новый UNNotificationRequest для определенного item, используйте UUID().uuidString, который создает новый уникальный идентификатор при каждом вызове. Вероятно, вы могли бы использовать этот уникальный идентификатор в сочетании с title, если это более точно для вашего сценария.

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