强制重新加载 watchOS 2 并发症

Ber*_*rnd 3 ios swift clockkit watchos-2

我在让 Complications 工作时遇到问题。如果我能够可靠地刷新它们,那将会很有帮助。

因此,我将强制按下菜单按钮链接到以下方法

@IBAction func updateComplication() {
    let complicationServer = CLKComplicationServer.sharedInstance()
    for complication in complicationServer.activeComplications {
        complicationServer.reloadTimelineForComplication(complication)
    }        
}
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会导致应用程序崩溃。与fatal error: unexpectedly found nil while unwrapping an Optional value.

我知道电话reloadTimelineForComplication(complication)是有预算的,但这不是这里的问题,因为它从一开始就不起作用。

我目前正在使用 watchOS2 + Xcode 7 GM

我很感激有关在应用程序运行时刷新复杂功能的任何想法?

igr*_*ech 6

跟踪或使用异常断点并专注于阅读整个错误消息,它告诉您它在哪一行意外发现了 nil(我确实怀疑是 complicationServer)。使用 'if let' 而不是 'let' 来强制解包相应的变量。

private func reloadComplications() {        
    if let complications: [CLKComplication] = CLKComplicationServer.sharedInstance().activeComplications {
        if complications.count > 0 {
            for complication in complications {
                CLKComplicationServer.sharedInstance().reloadTimelineForComplication(complication)
                NSLog("Reloading complication \(complication.description)...")
            }
            WKInterfaceDevice.currentDevice().playHaptic(WKHapticType.Click) // haptic only for debugging
        }
    }
}
Run Code Online (Sandbox Code Playgroud)