我最近通过Time Capsule备份恢复了以前版本的应用程序,除了一件事之外,一切都正常。当我尝试为我的应用程序使用手表扩展时,它永远不会收到来自父应用程序的回复。我没有改变任何代码,但无论如何它都无法工作。即使我只是发送一个空请求和一个简单的字符串,我也会得到同样的错误:
iPhone App中的UIApplicationDelegate从未调用reply()
这是我的代码的简化版本:
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
WKInterfaceController.openParentApplication(["test": "test"]) { userInfo, error in
println("User Info: \(userInfo)")
println("Error: \(error)")
}
}
代表:
func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
let favouritesArrayDefaults = NSUserDefaults.standardUserDefaults().arrayForKey("favourites")!
if let pfqueryRequest: AnyObject = (userInfo as? [String: AnyObject])?["parkName"] {
} else {
let taskID = beginBackgroundUpdateTask()
reply(["Success": "Success"])
endBackgroundUpdateTask(taskID)
}
}
有人有什么想法吗?
答案 0 :(得分:0)
你应该立即拨打手表的回复功能。您不能等到异步功能完成。到那时手表已经放弃并决定手机没有回复。我不能再在Apple的文档中找到相应的声明,但我确实记得读过它。
答案 1 :(得分:0)
您的代码不会在第一个if块(在else之前)调用replyBlock。可能是您看到错误日志的代码路径?
答案 2 :(得分:0)
想出来!这一行:
let favouritesArrayDefaults = NSUserDefaults.standardUserDefaults().arrayForKey("favourites")!
如果数组为空,会崩溃。这是我第一次在主应用程序中尝试使用空数组的监视应用程序,这就是为什么它以前从未发生过。