ios - 强制重新加载 watchOS 2 并发症

标签 ios swift watchos-2 clockkit

我在让并发症发挥作用时遇到了问题。如果我能够可靠地刷新它们将会很有帮助。

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

@IBAction func updateComplication() {
    let complicationServer = CLKComplicationServer.sharedInstance()
    for complication in complicationServer.activeComplications {
        complicationServer.reloadTimelineForComplication(complication)
    }        
}

不幸的是,这会导致应用程序崩溃。出现 fatal error :在展开可选值时意外发现 nil

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

我目前使用的是 watchOS2 + Xcode 7 GM

如果有关于在应用程序运行时刷新复杂功能的任何想法,我将不胜感激?

最佳答案

跟踪或使用异常断点并专注于阅读整个错误消息,它准确地告诉您它在哪一行意外地发现了 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
        }
    }
}

关于ios - 强制重新加载 watchOS 2 并发症,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32575156/

相关文章:

ios - 我尝试根据状态显示数据库

watchkit - HKWorkoutSession 没有将应用程序放在 Apple Watch 前面

ios - watch 上未收到 WatchKit Darwin 通知

iphone - 检测 UIImageView 在 UITableViewCell 中的点击

ios - UIWebView 从加载的页面获取 http 状态代码

swift - 在 Swift 中发布休息调用

ios - 合并一种类型的可观察量,然后链接到另一种类型的可观察量

swift - 二次曲线在不同设备上无法正确呈现

ios - 如何在 watchOS 2 上设置 Core Data

ios - 规范化 JSON,使等效对象具有相同的哈希值