我正在尝试从父应用程序接收一组对象(从应用程序内的 Parse 检索)以显示在 watch 应用程序中。我一直在尝试一些不同的事情,但没有成功。
这是我在扩展中的代码:
override func awakeWithContext(context: AnyObject?) {
super.awakeWithContext(context)
var parkPassed = context as! String
openParentAppWithPark(parkPassed)
}
private func openParentAppWithPark(park: String) {
WKInterfaceController.openParentApplication(["request": park], reply: { (reply, error) -> Void in
println(reply)
})
}
父应用中的代码:
func application(application: UIApplication, handleWatchKitExtensionRequest userInfo: [NSObject : AnyObject]?, reply: (([NSObject : AnyObject]!) -> Void)!) {
println("Test")
if let userInfo = userInfo, request = userInfo["request"] as? NSArray {
if request == "Park 1" {
DataManager.sharedInstance.loadRides("Park 1")
} else if request == "Park 2" {
DataManager.sharedInstance.loadRides("Park 2")
} else if request == "Park 3" {
DataManager.sharedInstance.loadRides("Park 3")
} else {
DataManager.sharedInstance.loadRides("Park 4")
}
let rides = DataManager.sharedInstance.rideArray
println("Rides: \(rides)")
reply(["rideData": rides])
return
}
reply([:])
}
println
我总是在第一次尝试加载时返回 nil
,然后每隔一次返回 [:]
。我认为这是因为请求在应用程序有时间从 Parse 加载数据之前超时?此外,从未调用应该打印“Test”的 println
。
最佳答案
在扩展中,您通过 request
键将 String
(park
) 传递给父应用程序,但在父应用程序中应用程序,您正在测试 userInfo["request"]
是否为 NSArray
。您应该测试 String
,如:
if let userInfo = userInfo, request = userInfo["request"] as? String {
关于ios - 没有数组从父应用程序发送到 Watch 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31707109/