2016-04-20 2 views
0

Я пытаюсь создать приложение для набора часов и подключить его к моему приложению iOS, используя xamarin framework.In HandleWatchKitExtensionRequest Я использую класс MarketRequestHandler для переноса данных из API и отображать его на watchkit. Моя Ошибка: «UIApplicationDelegate в iPhone App никогда не называл ответ() в - [применения UIApplicationDelegate: handleWatchKitExtensionRequest: ответ:]} Класс: {} ObjCRuntime.Class ClassHandle (Foundation.NSError): 0xf09c10 ClassHandle (Foundation.NSObject): 0xf09c10 Код: 2 DebugDescription: «Error Domain = com.apple.watchkit.errors Code = 2 \» UIApplicationDelegate в приложении iPhone никогда не вызывал ответ() в [UIApplicationDelegate application: handleWatchKitExtensionRequest: reply: ] \ "UserInfo = {NSLocalizedDescription = UIApplicationDelegate в приложении iPhone никогда не вызывал ответ() в [UIApplicationDelegate application: handleWatchKitExtensionRequest: reply:]}"«UIApplicationDelegate в приложении для iPhone никогда не назывался reply()» - Xamarin

Это мой код:

public override void HandleWatchKitExtensionRequest 
    (UIApplication application, NSDictionary userInfo, Action<NSDictionary> reply) { 

     var json = new JsonParams(); 
     var id=""; 
     nint taskID = UIApplication.SharedApplication.BeginBackgroundTask (() => { 
     }); 
     new Task (() =>{ 
      MarketRequestHandler mrk = new MarketRequestHandler(); 

      json.ckeys = new string[]{"P"}; 
      json.ids = new string[0]; 
      json.fields = new string[]{ 
             "LastDealTime", 
             "LastDealDate" 
             }; 
      json.index = 0; 
      json.count = 300; 

      var jsonStr = JsonConvert.SerializeObject (json); 

      mrk.HandleRequest("market.get",jsonStr, (cb) =>{ 
       id = json.ids[0]; 
       reply (new NSDictionary (
        "index", NSNumber.FromInt32 ((int)json.index), 
        "count", NSNumber.FromInt32((int)json.count), 
        "rzf", new NSString(id) 
       )); 
      }); 
      UIApplication.SharedApplication.EndBackgroundTask(taskID); 
     }).Start();     




    } 

Часы интерфейс

общественного переопределения недействительным Awake (NSObject контекст) {

 // Configure interface objects here. 
     base.Awake (context); 
     Console.WriteLine ("{0} awake with context", this); 

     WKInterfaceController.OpenParentApplication (new NSDictionary(), (replyInfo, error) => { 
      if(error != null) { 
       Console.WriteLine (error); 
       return; 
      } 
      Console.WriteLine ("parent app responded"); 
      // do something with replyInfo[] dictionary 
      Label.SetText (replyInfo.Keys[0].ToString() + " " + replyInfo.Values[0].ToString()); 
      label2.SetText(replyInfo.Keys[1].ToString() + " " + replyInfo.Values[1].ToString()); 
      label3.SetText(replyInfo.Keys[2].ToString() + " " + replyInfo.Values[2].ToString()); 
     }); 


    } 

ответ

0

Глядя на ваш код, я бы предположил, что id = json.ids[0]; бросает IndexOutOfRangeException так ранее вы устанавливаете его в пустой массив. Вот почему reply никогда не вызывается. Возможно, вы захотите использовать cb вместо json в обработчике обратного вызова.