簡體   English   中英

如何從CoreData中存儲的日期創建dateComponents

[英]How to create dateComponents from Date stored in CoreData

我正在嘗試從UIDatePicker的CoreData中存儲的日期創建dateComponents。 但是,我無法做到。 我首先將存儲在editnotes?.sSelectedDate轉換為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無法在計划的時間觸發通知的原因。 幫助將不勝感激?

像這樣顯式投射

let anchorComponents = calendar.dateComponents(unitFlags, from: date) as! DateComponents

您正在使用anchorComponents.days / .hours / .days / .minutes這都是可選的。 相反,我使用了DateComponents初始化程序,在其中您明確設置了所需的屬性。 但是我認為您只是在做錯什么,這就是為什么通知無法正常工作且原因還不是日期的原因。 您只需將日期設置為當前日期再加上幾秒鍾即可進行檢查,以查看是否會收到通知

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM