ios – 如何在Objective-C中将已弃用的方法替换为SuccessCallbackString和writeJavascript?

前端之家收集整理的这篇文章主要介绍了ios – 如何在Objective-C中将已弃用的方法替换为SuccessCallbackString和writeJavascript?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
由于我来自 Java背景,因此我不是Objective-C专家,因此需要努力修改以下代码
  1. - (void) loadHTML:(CDVInvokedUrlCommand*)command
  2. {
  3.  
  4. NSString* callbackId = command.callbackId;
  5. NSArray *arguments = command.arguments;
  6.  
  7. CDVPluginResult* pluginResult;
  8.  
  9. if (webView)
  10. {
  11. NSString *stringObtainedFromJavascript = [arguments objectAtIndex:0];
  12. [webView loadHTMLString:stringObtainedFromJavascript baseURL:baseURL];
  13.  
  14. if (screenNeedsInit) {
  15. [self makeScreenVisible];
  16. }
  17.  
  18. pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: WEBVIEW_OK];
  19. [self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]];
  20. }
  21. else
  22. {
  23. pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString: WEBVIEW_UNAVAILABLE];
  24. [self writeJavascript: [pluginResult toErrorCallbackString:callbackId]];
  25. }
  26.  
  27. }

编译器抱怨writeJavascript和toErrorCallbackString都被弃用了,我应该用evalJS和pluginResult替换它们.

所以,我的第一步是改变这一行:

  1. [self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]];

像这样:

  1. [self.commandDelegate evalJs: [pluginResult toSuccessCallbackString:callbackId]];

所以,这个工作,但我仍然需要用sendPluginResult替换toSuccessCallbackString,所以我搜索了这个:

  1. [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];

但是我如何将evalJS与sendPluginResult结合起来呢?在旧版本中,我认为pluginResult toSuccessCallbackString只返回一个NSString *但是现在有了sendPluginResult,似乎涉及回调?如何管理它以将sendPluginResult的结果传递给evalJS.

注意:我正在使用cordova api.

请保持温和,我还没有写过很多Objective-C而且我在语法方面遇到了困难.

解决方法

用这个:
  1. [self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];

如果你在pluginResult上使用CDVCommandStatus_OK,那么它将调用成功回调,如果你使用了CDVCommandStatus_ERROR那么它将调用错误回调

你的javascript应该是这样的:

  1. cordova.exec(successCallback,errorCallback,"YourPluginName","loadHTML",["yourHtmlString"]);

猜你在找的iOS相关文章