Где следует хранить данные Apple Watch Complication? - PullRequest
0 голосов
/ 31 декабря 2018

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

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

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

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

1 Ответ

0 голосов
/ 31 декабря 2018

Вы можете хранить некоторые данные в 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
    }

}
...