The UIApplicationDelegate in the iPhone App never called reply

后端 未结 3 578
予麋鹿
予麋鹿 2021-02-13 22:21

I am trying to launch my iPhone app from watch simulator using the below code :

WKInterfaceController subclass

[WKInterfaceController op         


        
3条回答
  •  刺人心
    刺人心 (楼主)
    2021-02-13 22:54

    Aside from just not calling the reply block, this can happen for at least a couple reasons:

    1. Your iPhone app crashed while it was processing the request and therefore was never able to call the reply block. Check that you are not accidentally putting nil into an NSMutableDictionary, as that will cause a crash.
    2. You are trying to put something that can't be serialized into a plist file into the replyInfo dictionary (hat tip to @duncan-babbage). If you need to pass an NSAttributedString or your custom object, make sure it conforms to NSCoding and do this:

    On the phone side build your reply dictionary:

    NSMutableDictionary *reply = [NSMutableDictionary new];
    MyCustomObject *myObject = ;
    reply[@"myKey"] = [NSKeyedArchiver archivedDataWithRootObject: myObject];
    NSAttributedString *myString = ;
    reply[@"otherKey"] = [NSKeyedArchiver archivedDataWithRootObject: myString];
    

    And unpack it back on the watch side:

    NSData *objectData = replyInfo[@"myKey"];
    MyCustomObject *myObject = [NSKeyedUnarchiver unarchiveObjectWithData: objectData];
    NSData *stringData = replyInfo[@"otherKey"];
    NSAttributedString *myString = [NSKeyedUnarchiver unarchiveObjectWithData: stringData];
    

提交回复
热议问题