我正在尝试设置本地用户通知。我有一组要在特定日期收到通知的数据。数据按照名称,信息和日期之类的信息分类。由于已经建立了其他代码,因此将数据中的数据格式化为整数。例如,如果日期为5月5日,则关联的日期变量为505,或者如果日期为12月11日,则关联的日期变量为1211。
如何创建一个函数,使用保存在数据库中的变量在指定的日期触发本地用户通知?
以下代码按日期对数据进行排序,然后将下一个数据放在第0个位置。
func userNotification() {
let content = UNMutableNotificationContent()
let allDiscounts = discountBank()
let dateClass = theDate()
var my1 = 0
var myList = [Int]()
for i in 0...allDiscounts.list.count-1 {
if dateClass.todaysDate > allDiscounts.list[i].dateApplied {
my1 = i+1
}
}
myList.append(my1)
for i in my1+1...allDiscounts.list.count-1{
myList.append(i)
}
if my1>=1{
for i in 0...my1-1{
myList.append(i)
}
}
print(myList)
content.title = "Todays Deal at \(allDiscounts.list[myList[0]].businessName)"
content.body = allDiscounts.list[myList[0]].theDeal
content.sound = UNNotificationSound.default
let trigger = UNCalendarNotificationTrigger(dateMatching: , repeats: false)
let request = UNNotificationRequest(identifier: "TestIdentifier", content: content, trigger: trigger)
UNUserNotificationCenter.current().add(request, withCompletionHandler: nil)
}
我打算使用if语句来触发函数中的触发器,例如如果当前日期等于数据库中的下一个日期,那么我想触发一个通知;但是,我不知道如何调用与今天相同的datecomponent。我也不知道这是否真的行得通。
答案 0 :(得分:0)
创建一个扩展程序,该扩展程序将从您的数据中创建日期成分:
extension Int {
var month: Int {
return self / 100
}
var day: Int {
return self % 100
}
}
根据日期成分创建通知触发器:
let date = allDiscounts.list[myList[0]].dateApplied
let components = DateComponents(month: date.month,
day: date.day,
hour: 10, minute: 00, second: 00)
let trigger = UNCalendarNotificationTrigger(dateMatching: components, repeats: false)
let identifier = "\(date)"
let content = UNNotificationContent(
let request = UNNotificationRequest(identifier: identifier,
content: content,
trigger: trigger)