Где следует хранить данные 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
}
}