向+ [WKInterfaceController openParentApplication:reply:]提供自定义错误

时间:2015-04-01 18:06:50

标签: ios watchkit uiapplicationdelegate

+[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);
    }
}

注意:这是一个精简的示例,未考虑userInforesponse参数;实际用法将考虑这些因素。

1 个答案:

答案 0 :(得分:0)

不幸的是,您无法访问error参数。我所做的是将任何错误作为字符串传递并使用通用字典键。然后,我检查WatchKit端是否存在该密钥,并记录它找到的任何错误。不太理想,可以肯定。