Документация по формату JSON-файлов резервных копий.
Унифицированный формат с явным указанием платформы:
{
"format" : " ios" ,
"items" : [
{
"title" : " День рождения" ,
"details" : " Мой день рождения" ,
"timestamp" : 699417600.0 ,
"colorTag" : " YnBsaXN0MDDU..." ,
"displayOption" : " day"
}
]
}
Поле
Тип
Описание
format
String?
"ios" или "android" (опционально)
items
Array
Массив объектов BackupItem
Поле
Тип
Описание
title
String
Название события
details
String?
Описание (пустая строка если null)
timestamp
Double
Дата события
colorTag
String?
Цвет (hex или Base64)
displayOption
String
Опция отображения
Поле
iOS
Android
format
"ios"
"android"
timestamp
Секунды с 2001-01-01
Миллисекунды с 1970-01-01
colorTag
Base64 (NSKeyedArchiver)
Hex #RRGGBB
iOS : Date.timeIntervalSinceReferenceDate (секунды с 2001-01-01)
Android : System.currentTimeMillis() (миллисекунды с 1970-01-01)
iOS : Base64-закодированный NSKeyedArchiver с UIColor
Android : Hex-строка #RRGGBB (регистронезависимый)
Значение
Описание
day
Только день
monthDay
День и месяц
yearMonthDay
Полная дата
Логика импорта (BackupImporter)
Попытка декодировать BackupWrapper
format == "android" → timestamp как миллисекунды с 1970
format == "ios" или nil → timestamp как секунды с 2001
Fallback: декодировать как [BackupItem] (старый формат без обёртки)
Парсинг colorTag (RawBackupItem.init(from:))
Попытка декодировать как Data → NSKeyedUnarchiver → UIColor
Иначе как String → Color(hex:) (Android-формат)
Экспорт (BackupFileDocument.exportWrapper())
format: .ios
timestamp: timeIntervalSinceReferenceDate
colorTag: NSKeyedArchiver.archivedData(withRootObject: UIColor)
Файлы без поля format:
[
{
"title" : " День рождения" ,
"timestamp" : 699417600.0 ,
"colorTag" : " ..." ,
"displayOption" : " day"
}
]
Декодируются как [BackupItem]
Timestamp интерпретируется как секунды с 2001
Файл
Назначение
Models/BackupFileDocument.swift
Экспорт/импорт, BackupWrapper, RawBackupItem
Models/BackupFormat.swift
enum BackupFormat
Services/BackupImporter.swift
Парсинг JSON с определением формата
Extensions/Color+Hex.swift
Парсинг hex-цветов