Попытка сохранить экземпляр DateComponents
- неправильный подход; Вы не видите внутреннюю структуру объекта, и эта структура может измениться с обновлениями Swift или iOS.
Вы предполагаете, что вы можете обойти инициализацию DateComponents
, просто восстановив байты, которые представляли какой-то другой экземпляр; Это неверное предположение.
DateComponents
на самом деле бесплатен и соединен с базовым экземпляром NSDateComponents
.
Когда вы вызываете UnsafeBufferPointer<DateComponents>(start: unsafePointer, count: 1)
, вы получаете доступ к структуре Swift, которая используется для доступа к базовому экземпляру NSDateComponents
.
Когда вы впоследствии попытаетесь воссоздать эту структуру, этот базовый объект не существует, и вы получите 0.
Вам следует либо сохранить определенные поля, необходимые для воссоздания компонентов даты (например, часовой пояс, часы и т. Д.), Либо сохранить объект Date
.