{ var face: Face var metadata: Metadata var snapshot: Data var no_borders_snapshot: Data var resources: Resources? typealias ComplicationData = Metadata.ComplicationPositionDictionary<[String: Data]> var complicationData: ComplicationData? = nil } ✅ FileWrapper͕͋ΔલఏͩͱɼDataͱCodable structΛϑΥϧμߏͲ͓ΓฒΔ͚ͩ
var version: Int = 2 var device_size = 2 // 38mm, 42mm? var complication_sample_templates: ComplicationPositionDictionary<ComplicationTemplate> var complications_names: ComplicationPositionDictionary<String> var complications_item_ids: ComplicationPositionDictionary<Int> var complications_bundle_ids: ComplicationPositionDictionary<String>? } ✅ metadata.jsonʹίϯϓϦέʔγϣϯ͕͋ΔɻͦͷBundle IDcom.apple.HeartRate ͳͲ͕ೖΔ {"top": … , "bottom-left": …} ͳͲɼஔ͢ΔҐஔΛΩʔͱͯ͠هड़͞Ε͍ͯΔ
case utilitarianSmallFlat(CLKComplicationTemplateUtilitarianSmallFlat) case utilitarianLargeFlat(CLKComplicationTemplateUtilitarianLargeFlat) case circularSmallSimpleText(CLKComplicationTemplateCircularSmallSimpleText) : ✅ ίϯϓϦέʔγϣϯʹ͞·͟·ͳλΠϓ͕͋ΓҰ࿈ͷΫϥεͰදݱ͞Ε͍ͯΔ ʹݟ͑Δ෦ͷछྨɼςΩετɾΠϝʔδɾήʔδͷproviderͱͯ͠ग़ݱ͢Δ struct CLKComplicationTemplateUtilitarianSmallFlat: Codable { static let `class` = "CLKComplicationTemplateUtilitarianSmallFlat" var `class`: String = Self.class var version: Int = 30000 var creationDate: Double = Date().timeIntervalSince1970 var textProvider: CLKTextProvider = .date(.init()) }
case simple(CLKSimpleTextProvider) case date(CLKDateTextProvider) case time(CLKTimeTextProvider) case compound(CLKCompoundTextProvider) case relativeDate(CLKRelativeDateTextProvider) } ✅ ςΩετͷදࣔʹछྨ͕͋ͬͯɼγϯϓϧͳςΩετࢦఆͷ΄͔ɾɾ࣌ؒΛ࣋ ͭͷɼͦΕΒΛෳ߹ͯ͠υοτܨ͗͢ΔͳͲͷϑΥʔϚοτ͕Ͱ͖ΔΑ͏Ͱ͢
enum CodingKeys: String, CodingKey { case version case customization case complications case face_type = "face type" case resource_directory = "resource directory" } "face type": "whistler-analog", "complications": { "slot 1": {