Apple Watch Complication数据应存储在哪里?

时间:2018-12-30 22:01:32

标签: ios swift watchkit apple-watch-complication

我需要存储由主Watch应用程序(和iPhone应用程序)控制并以复杂方式显示的数据。

official Apple documentation

  

如果您需要获取或计算并发症数据,请执行此操作   在您的iOS应用或WatchKit扩展的其他部分(针对   例如,通过安排后台应用刷新任务),并缓存   放置在您的并发症数据源可以访问的位置。

当他们告诉您将数据缓存在并发症可以访问的地方时,他们有什么想法?实现此目标的最佳实践/标准方法是什么?

1 个答案:

答案 0 :(得分:0)

您可以在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
    }

}