+[WKInterfaceController openParentApplication:reply:]
的reply
参数是一个接收(NSDictionary *replyInfo, NSError *error)
的块。
replyInfo
参数由-[UIApplicationDelegate application:handleWatchKitExtensionRequest:reply:]
方法提供。
但是,第二种方法的reply
参数是一个只接受(NSDictionary *replyInfo)
的块;没有error
参数。
有没有办法从我的iPhone应用程序中为+[WKInterfaceController openParentApplication:reply:]
提供自定义NSError
作为参数,还是为系统保留的参数? (例如,如果手表和手机之间存在通信错误。)
以下是我想要做的一个例子:
在WatchKit中:
WKInterfaceController.openParentApplication(nil, reply: { (response, error) -> Void in
if error != nil {
println("Error: \(error)")
} else {
doSomethingUseful()
}
}
在UIApplicationDelegate
:
- (void)application:(UIApplication *)application handleWatchKitExtensionRequest:(NSDictionary *)userInfo reply:(void (^)(NSDictionary *))reply {
if (inBadState) {
reply(nil, [NSError errorWithDomain:errorDomain code:errorCode userInfo:nil]);
} else {
reply([self response], nil);
}
}
注意:这是一个精简的示例,未考虑userInfo
或response
参数;实际用法将考虑这些因素。
答案 0 :(得分:0)
不幸的是,您无法访问error
参数。我所做的是将任何错误作为字符串传递并使用通用字典键。然后,我检查WatchKit端是否存在该密钥,并记录它找到的任何错误。不太理想,可以肯定。