当前位置: 首页 > 面试题库 >

调用ExtensionDelegate来创建/刷新复杂数据

庄欣然
2023-03-14
问题内容

我所有的数据创建都在中完成ExtensionDelegate.swift


问题ExtensionDelegate.swift没有得到该功能之前叫getCurrentTimelineEntryForComplication我的ComplicationController.swift

有任何想法吗? 这是我的代码和详细信息:

所以我的数组extEvnts是空的ComplicationController.swift

    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

// 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类的方法调用父应用程序,以接收新信息。

您可以NSUserDefaults用来存储将在您的中使用的命令性数据ComplicationController,然后从中加载此信息NSUserDefaults以防万一。我将这些数据存储在用户默认设置中,以便在新数据无法加载的情况下始终显示旧数据。



 类似资料:
  • 在Spring-boot应用程序中使用yaml(带有snakeyaml依赖关系1.16),我试图基于application.yml文件创建。我想创建一个像下面的json这样的数据结构,它是一个包含字符串键和数组值的映射。 我已经为我的yaml尝试了以下方法 尝试二 尝试三 如果我将集合更改为一个ArrayList(或List接口),这就可以了,但这不是我想要的。更改为此 但need也不能用于Set

  • pre { white-space: pre-wrap; } 数据网格(datagrid)的工具栏(toolbar)可以包含按钮及其他组件。 您可以通个一个已存在的 DIV 标签来简单地定义工具栏布局,该 DIV 标签将成为数据网格(datagrid)工具栏的内容。 本教程将向您展示如何创建数据网格(datagrid)组件的复杂工具栏。 创建工具栏(Toolbar)     <div id="t

  • 宏在参数列表中可以使用 + 来表示一个参数可能出现一次或多次,使用 * 来表示该参数可能出现零次或多次。 在下面例子中,使用 $(...),+ 包含的内容将匹配一个或多个表达式,使用逗号隔开。还注意到分号对于最后一种情形是可选的。 // `min!` 将求出任意数量的参数的最小值。 macro_rules! find_min { // 基本情形: ($x:expr) => ($x)

  • 如果我想在某个任意ObservableValue已更改但基础TableView数据未更改的情况下使TableView刷新(而不调用refresh()方法),那么对提取器回调方法进行自适应是否是一个好的解决方案? 这是一个使用TableView刷新()方法的实现示例。 当之前有人问过类似的问题时,@kleopatra表示“不,永远不要使用刷新。” 我有一个底层数据没有变化的情况,只是它在TableV

  • 我有一个mysql查询,它并不是很复杂,但我似乎不知道应该如何用Symfony编写它。 首先是查询: 我基本上是想看看t1是否是这些列中任何单词的一部分。假设是正在传递的变量。我不确定我是否应该在存储库中写这篇文章,如果应该,如何写。我正在寻找最佳实践方法。 谢谢

  • 当我使用按钮尝试使用方法更新Firebase realtime database中的数据时,每当我单击该按钮时,它都会重新创建该活动。Firebase的'set value()'是否自动重新创建活动?如果有,如何防止?