handleWatchKitExtentionRequest ...如何访问reply元素以返回值到watchkit扩展?

时间:2014-12-15 00:44:07

标签: swift dictionary watchkit

我知道我必须对swift做错了......新的API声明了一对方法......

class func openParentApplication(_ userInfo: [NSObject : AnyObject]!,
                       reply reply: (([NSObject : AnyObject]!,
                                      NSError!) -> Void)!) -> Bool

可以在手表套件扩展中使用...和

   func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) -> Void)!) {

可以在父应用程序中用来处理请求....

我知道我做错了,可能是用swift,但是回复对象应该是我可以将信息发送回扩展的地方,但我无法弄清楚如何将值设置到回复对象/字典中handlewatchkitextentionrequest方法...我知道它只是我不理解swift语法,但我尝试过的所有内容都失败了...我如何设置值/定义这个字典?我试过创建一个字典并指定它来回复,nope,试图访问它的元素没有骰子......我知道这一定很简单,但我只是没有看到它。

2 个答案:

答案 0 :(得分:4)

Watchkit扩展:

// Call the parent application from Apple Watch

// values to pass
let parentValues = [
    "value1" : "Test 1",
    "value2" : "Test 2"
]

WKInterfaceController.openParentApplication(parentValues, reply: { (replyValues, error) -> Void in
    println(replyValues["retVal1"])
    println(replyVaiues["retVal2"])
})

iOS App:

// in AppDelegate.swift
func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) -> Void)!) {
    // retrieved parameters from Apple Watch
    println(userInfo["value1"])
    println(userInfo["value2"])

    // pass back values to Apple Watch
    var retValues = Dictionary<String,String>()

    retValues["retVal1"] = "return Test 1"
    retValues["retVal2"] = "return Test 2"

    reply(retValues)
}

答案 1 :(得分:1)

哇,为什么这么难找到答案,显然这是正确的方法 在

里面
func application(application: UIApplication!, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]!, reply: (([NSObject : AnyObject]!) -> Void)!) {

您通过以下方式发回:

reply(["x":"y"])