将 NSDateComponents 传递给 UILocalNotification 的最佳实践?

Best practice for passing NSDateComponents to UILocalNotification?

我想将一个 NSDateComponents 对象传递给我的 UILocalNotification 对象的 userInfo 属性。这样做最优雅的方法是什么?

我正在使用 EKReminders 并传递它们的 dueDateComponents(类型为 NSDateComponents。)我还传递了两个字符串,所以我想也许我将通过 NSDateComponentdescription 属性。 (我无法传递 NSDateComponent 本身,因为它不是有效的 'property list type')当我收到本地通知时,我需要再次从字符串中返回一个 NSDateComponents。我正在使用以下代码执行此操作,但我不确定它是否始终有效(对于每个语言环境?)因为我不知道 dueDateComponents 是否始终具有与下面相同的格式...

这真的是 best/most 传递 NSDateComponents 的稳定方式吗?

let duedatestrTime = "2016-10-01 01:00:00 +0000"

// MARK: date utilities
extension String {
    func toDate() -> NSDate? {
        let dateFormatter = NSDateFormatter()
        dateFormatter.dateFormat = "yyyy-MM-dd HH:mm:ss Z"  // IS THIS RELIABLE? DO I KNOW THAT EKReminders.dueDateComponents ALWAYS HAVE THIS FORMAT? IF NOT IT'LL RETURN NIL... 
        return dateFormatter.dateFromString(self)
    }
}

extension NSDate {
    func toNSDateComponents() -> NSDateComponents {
        let unitFlags: NSCalendarUnit = [.Day, .Month, .Year, .Hour, .Minute]
        return NSCalendar.currentCalendar().components(unitFlags, fromDate: self)
    }
}

let x = strTime.toDate().toNSDateComponents()

NSDate 是可以使用的有效类型。为什么不将组件转换为 NSDate 以将其传入,然后在输出时将其转换回组件?