我正在尝试从UIDatePicker中存储在CoreData中的Date创建dateComponents。但是,我无法做到。我首先将存储在editnotes?.sSelectedDate
中的Date转换为dateComponents
,然后使用dateComponents触发我的通知。
这是我正在做的事情:
var date = Date()
if let editnote = editnotes
{
date = editnote.sSelectedDate
}
else
{
print("nil")
}
let calendar = NSCalendar.current
let unitFlags = Set<Calendar.Component>([.day, .month, .year, .hour, .minute])
let anchorComponents = calendar.dateComponents(unitFlags, from: date)
var dateInfo1 = DateComponents()
dateInfo1.day = anchorComponents.day
dateInfo1.month = anchorComponents.month
dateInfo1.hour = anchorComponents.hour
dateInfo1.minute = anchorComponents.minute
dateInfo1.year = anchorComponents.year
let trigger = UNCalendarNotificationTrigger(dateMatching:dateInfo1, repeats: false)
我这样做:
if let editnote = editnotes
{
date = editnote.sSelectedDate
}
else
{
print("nil")
}
打开可选项,但它仍无法正常工作。继续阅读!
我知道我可以使用anchorComponents,但这不起作用,所以我将它们复制到一个新的DataComponents实例中。
我正在尝试打印dateInfo1.hour
中存储的内容并获取
可选(2)
我认为这就是为什么dateComponents不能在预定时间触发通知的原因。 帮助将不胜感激?
答案 0 :(得分:0)
显式投射它像
let anchorComponents = calendar.dateComponents(unitFlags, from: date) as! DateComponents
答案 1 :(得分:0)
你使用anchorComponents.days / .hours / .days / .minutes
它都是可选的。相反,我在DateComponents
使用了初始化程序,您可以在其中明确设置所需的属性。但我认为你只是做错了什么,这就是为什么通知不起作用,原因不是约会。您可以通过设置从日期到当前日期加上几秒来检查它是否会收到通知