是否有(优雅或首选)方法将DateComponents对象转换为String并返回以便
DateComponents -> String -> DateComponents
总是可能的,结果对象等于原始对象? (不完全相同)(如CustomStringRepresentable
)
对于NSDate
/ Date
,有一个NSDateFormatter
/ DateFormatter
可以执行此操作,来回转换。
对于DateComponents
,有一个DateComponentsFormatter
,但在我看来,我不支持String
到DateComponents
的指示。
此问题的动机
HealthKit用于将生日存储为NSDate
,直至iOS 9.x。
从iOS 10开始,HealthKit使用DateComponents
作为生日模型。 (并在生日时弃用NSDate
)
我试图在我自己的HealthKit中心应用数据模型中反映HealthKits模型更改。最直接的是在我的模型中使用DateComponents
作为HealthKit。
由于我需要将模型保存到文件并再次加载,因此这个问题的答案可以让我这样做。
明显的后备是将DateComponents
转换为Date
并保存。但是,Apple必须有一个很好的理由为生日弃用Date
。
答案 0 :(得分:1)
只需通过NSKeyedArchiver
直接保存日期组件,因为NSDateComponents
符合NS(Secure)Coding
。