我所有的数据创建都在中完成ExtensionDelegate.swift。
ExtensionDelegate.swift
该 问题ExtensionDelegate.swift没有得到该功能之前叫getCurrentTimelineEntryForComplication我的ComplicationController.swift。
getCurrentTimelineEntryForComplication
ComplicationController.swift
有任何想法吗? 这是我的代码和详细信息:
所以我的数组extEvnts是空的ComplicationController.swift:
extEvnts
func getCurrentTimelineEntryForComplication(complication: CLKComplication, withHandler handler: ((CLKComplicationTimelineEntry?) -> Void)) { let extEvnts = ExtensionDelegate.evnts }
因为ExtensionDelegate.swift还没有调用my ,这就是为数组创建数据的原因:
class ExtensionDelegate: NSObject, WKExtensionDelegate, WCSessionDelegate { private let session = WCSession.defaultSession() var receivedData = Array<Dictionary<String, String>>() static var evnts = [Evnt]() func session(session: WCSession, didReceiveUserInfo userInfo: [String : AnyObject]) { if let tColorValue = userInfo["TeamColor"] as? String, let matchValue = userInfo["Matchup"] as? String { receivedData.append(["TeamColor" : tColorValue , "Matchup" : matchValue]) ExtensionDelegate.evnts.append(Evnt(dataDictionary: ["TeamColor" : tColorValue , "Matchup" : matchValue])) } else { print("tColorValue and matchValue are not same as dictionary value") } } func applicationDidFinishLaunching() { // Perform any final initialization of your application. if WCSession.isSupported() { session.delegate = self session.activateSession() } } }
编辑:
对于每个Apple来说,这似乎与它有关,但是由于某种原因,我不知道如何实际实现它,因为我无法调用mydelegate.evnts:
mydelegate.evnts
// Get the complication data from the extension delegate. let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate var data : Dictionary = myDelegate.myComplicationData[ComplicationCurrentEntry]!
所以我已经尝试过类似的方法,但仍然无法正常工作,因为我仍然没有数据:
func someMethod() { let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate let dict = ExtensionDelegate.evnts print("ExtensionDel.evnts: \(dict.count)")
}
有用的问题,帮助我在这里
在该功能中,requestedUpdateDidBegin()您可以更新将在并发症中显示的信息。因此,在此方法中,您可以使用sendMessage:replyHandler:errorHandler:之WatchConnectivity类的方法调用父应用程序,以接收新信息。
requestedUpdateDidBegin()
WatchConnectivity
您可以NSUserDefaults用来存储将在您的中使用的命令性数据ComplicationController,然后从中加载此信息NSUserDefaults以防万一。我将这些数据存储在用户默认设置中,以便在新数据无法加载的情况下始终显示旧数据。
NSUserDefaults
ComplicationController