Где следует хранить данные Apple Watch Complication?

Мне нужно хранить данные, которые контролируются основным приложением Watch (и приложением iPhone) и отображаются в сложном виде.

Официальная документация Apple гласит

Если вам нужно извлечь или вычислить данные для вашей сложности, сделайте это в своем приложении iOS или в других частях вашего расширения WatchKit (например, путем планирования задачи обновления фонового приложения) и кэшируйте данные в месте, где ваши сложности источник данных может получить к нему доступ.

Что они имеют в виду, когда говорят вам кэшировать данные в месте, где усложнение может получить к ним доступ? Какова лучшая практика / стандартный способ достижения этого?

1 ответ

Вы можете хранить некоторые данные в UserDefaults и получать к ним доступ из своего источника данных усложнения.

то есть.

//In a background task
func getComplicationData(){
    let yourData = someNetworkCall()
    /* 
    yourData = [
        "complicationHeader": "Some string",
        "complicationInner": "Some other stirng"
    ]


    */
    UserDefaults.standard.set(yourData, forKey: "complicationData")
}

Тогда в вашем ComplicationDataSource

func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) {

    if let yourData = UserDefaults.standard.dictionary(forKey: "complicationData") as? [String: String] {
        //Handle setting up templates for complications
    }

}
Другие вопросы по тегам