Есть ли (элегантный или предпочтительный) способ преобразовать объект DateComponents в строку и обратно, чтобы
DateComponents -> String -> DateComponents
всегда возможно и полученный объект равен исходному объекту? (не идентичны) (например, CustomStringRepresentable
)
Для NSDate
/Date
есть NSDateFormatter
/DateFormatter
, которые умеют проделывать этот трюк, конвертируя туда-сюда.
Для DateComponents
есть DateComponentsFormatter
, но мне кажется, что направление от String
к DateComponents
не поддерживает.
мотивация для этого вопроса
HealthKit раньше сохранял дни рождения как NSDate
до iOS 9.x.
Начиная с iOS 10 HealthKit использует DateComponents
в качестве модели для дней рождения. (И устарело NSDate
для дней рождения)
Я пытаюсь отразить изменение модели HealthKits в моей собственной модели данных приложения, ориентированного на HealthKit. Самый простой способ — использовать DateComponents
в моей модели, как это делает HealthKit.
Поскольку мне нужно сохранить мою модель в файл и загрузить ее снова, ответ на этот вопрос позволит мне сделать это.
Очевидный запасной вариант — преобразовать DateComponents
в Date
и сохранить его. Но должна быть веская причина, по которой Apple не рекомендует Date
для дней рождения.