ios – WatchKit复杂功能:从扩展委托中获取复杂数据

ios – WatchKit复杂功能:从扩展委托中获取复杂数据,第1张

概述我在WatchKit扩展中拥有所需的所有数据(从iOS应用程序传递). 我使用WatchKit InterfaceController中的数据来填充表格,该表格完美无缺. 我正试图找出在WatchKit ComplicationController中获取相同数据的最佳方法. 目前,在InterfaceController中,使用didReceiveUserInfo传入数据: func sessio 我在WatchKit扩展中拥有所需的所有数据(从iOS应用程序传递).

我使用WatchKit InterfaceController中的数据来填充表格,该表格完美无缺.

我正试图找出在WatchKit ComplicationController中获取相同数据的最佳方法.

目前,在InterfaceController中,使用dIDReceiveUserInfo传入数据:

func session(session: WCSession,dIDReceiveUserInfo userInfo: [String : AnyObject]) {    if let beachValue = userInfo["Surf"] as? String {        places.append(Place(dataDictionary: ["Surf" : surfValue]))    } else {        print("Something went wrong")    }}

我是否需要在我的ComplicationController中调用相同的WCSession方法并再次获取整个数据,或者是否有更简单的方法来访问同一数据以便在ComplicationController中使用?

任何帮助赞赏.谢谢!

编辑:

我的表功能:

func maketable() {    // Per SO    let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate    let accessVar = myDelegate.places    self.rowtable.setNumberOfRows(accessVar.count,withRowType: "rows")    for (index,evt) in accessVar.enumerate() {        if let row = rowtable.rowControllerAtIndex(index) as? tableRowController {            row.mLabel.setText(evt.evMat)        } else {            print(“No”)        }    }}
解决方法
// Get the complication data from the extension delegate.let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegatevar data : Dictionary = myDelegate.myComplicationData[ComplicationCurrentEntry]!

从Apple’s Doc开始,只是在扩展委托中存储复杂化所需数据的一个示例,了解如何以单例形式轻松访问它.对“myComplicationData”的引用是Dictionary的示例,默认情况下不是ExtensionDelegate中的参数.

要么将您自己的类设置为单例,它会为您的手表保存数据,如下所示:

// Access by calling:// Model.sharedModel.modelVal1class Model {    static let sharedModel = Model()    var modelVal1: float!    var modelVal2: String!}

或者使用扩展委托作为您的单身人士,并将您的属性添加到其类中,如下所示.这将允许您访问在ExtensionDelegate中创建的任何变量.

// ExtensionDelegate.swiftclass ExtensionDelegate: NSObject,WKExtensionDelegate {    var dataVar1: float!    var dataVar2: String!    var myDictionary: [String: String]!}// ComplicationController.swiftimport WatchKitclass ComplicationController: NSObject,CLKComplicationDataSource {    func someMethod() {        let myDelegate = WKExtension.sharedExtension().delegate as! ExtensionDelegate        // Here is an example of accessing the float variable         let accessVar = myDelegate.dataVar1        let myDict = myDelegate.myDictionary    }}

使用任何一种方法都有助于将您的数据保存在一个位置,这样您就可以随时从手表扩展程序中的任何类访问它.

总结

以上是内存溢出为你收集整理的ios – WatchKit复杂功能:从扩展委托中获取复杂数据全部内容,希望文章能够帮你解决ios – WatchKit复杂功能:从扩展委托中获取复杂数据所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1068606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存