Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No array sent from parent app to Watch app

I am trying to receive an array of objects (that are retrieved from Parse within the app) from a parent application to be displayed in the watch application. I have been trying a few different things but with no success.

Here is my code in the extension:

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)
    })
}

And the code in the parent app:

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([:])
}

The println I have always returns nil the first time I try to load, and then [:] every other time. I assume this is because the request is timing out before the app has time to load the data from Parse? Also, the println that is supposed to print "Test" is never called.

like image 353
user3746428 Avatar asked Jul 29 '15 17:07

user3746428


1 Answers

In the extension, you're passing a String (park) to the parent application via the request key, but in the parent application, you're testing whether userInfo["request"] is an NSArray or not. You should be testing for a String, as in:

if let userInfo = userInfo, request = userInfo["request"] as? String {
like image 87
Christopher Whidden Avatar answered Nov 17 '22 17:11

Christopher Whidden