从String创建DateComponents / NSDateComponents,反之亦然

时间:2016-06-18 11:50:34

标签: swift date health-kit swift3

是否有(优雅或首选)方法将DateComponents对象转换为String并返回以便

DateComponents -> String -> DateComponents

总是可能的,结果对象等于原始对象? (不完全相同)(如CustomStringRepresentable

对于NSDate / Date,有一个NSDateFormatter / DateFormatter可以执行此操作,来回转换。

对于DateComponents,有一个DateComponentsFormatter,但在我看来,我不支持StringDateComponents的指示。

此问题的动机

HealthKit用于将生日存储为NSDate,直至iOS 9.x。

从iOS 10开始,HealthKit使用DateComponents作为生日模型。 (并在生日时弃用NSDate

我试图在我自己的HealthKit中心应用数据模型中反映HealthKits模型更改。最直接的是在我的模型中使用DateComponents作为HealthKit。

由于我需要将模型保存到文件并再次加载,因此这个问题的答案可以让我这样做。

明显的后备是将DateComponents转换为Date并保存。但是,Apple必须有一个很好的理由为生日弃用Date

1 个答案:

答案 0 :(得分:1)

只需通过NSKeyedArchiver直接保存日期组件,因为NSDateComponents符合NS(Secure)Coding