2

我知道我一定是用 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 方法中将值设置到回复对象/字典中。 ..我知道只是我不理解快速语法,但我尝试过的一切都失败了......我如何输入值/定义这本字典?我尝试创建字典并将其分配给回复,不,尝试访问它的元素没有骰子......我知道这一定很简单,但我只是没有看到它。

4

2 回答 2

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 应用程序:

// 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)
}
于 2014-12-17T07:21:35.463 回答
1

哇,为什么这也很难找到答案,显然这是里面的正确方法

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

您通过以下方式发回:

reply(["x":"y"])
于 2014-12-15T03:41:29.667 回答