Принудительная перезагрузка watchOS 2 Осложнения

У меня проблемы с получением осложнений на работу. Было бы полезно, если бы я был в состоянии надежно обновить их.

Поэтому я связал кнопку меню принудительного нажатия со следующим методом

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

К сожалению, это приводит к сбою приложения. с fatal error: unexpectedly found nil while unwrapping an Optional value,

Я понимаю, что зовет reloadTimelineForComplication(complication) заложено в бюджет, но это не может быть проблемой здесь, поскольку это не работает с самого начала.

В настоящее время я использую watchOS2 + Xcode 7 GM

Буду признателен за любые идеи по обновлению Complications во время работы приложения?

1 ответ

Проследите или используйте точку останова исключения и сосредоточьтесь на чтении всего сообщения об ошибке, где оно точно указывает, в какой строке он обнаружил ноль неожиданно (я подозреваю, что осложняющий сервер). Используйте '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
        }
    }
}
Другие вопросы по тегам