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

Tim*_*imo 8 objective-c callback ios cordova cordova-plugins

由于我来自Java背景,因此我不是Objective-C专家,因此需要努力修改以下代码:

- (void) loadHTML:(CDVInvokedUrlCommand*)command
{

    NSString* callbackId = command.callbackId;
    NSArray *arguments = command.arguments;

    CDVPluginResult* pluginResult;

    if (webView)
    {
        NSString *stringObtainedFromJavascript = [arguments objectAtIndex:0]; 
        [webView loadHTMLString:stringObtainedFromJavascript baseURL:baseURL];

        if (screenNeedsInit) {
            [self makeScreenVisible];
        }

        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString: WEBVIEW_OK];
        [self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]];
    }
    else
    {
        pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_ERROR messageAsString: WEBVIEW_UNAVAILABLE];        
        [self writeJavascript: [pluginResult toErrorCallbackString:callbackId]];    
    }

}
Run Code Online (Sandbox Code Playgroud)

编译器会抱怨,这两个,writeJavascript以及toErrorCallbackString已被取消,我应该代替他们evalJSpluginResult.

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

[self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]];
Run Code Online (Sandbox Code Playgroud)

像这样:

[self.commandDelegate evalJs: [pluginResult toSuccessCallbackString:callbackId]];
Run Code Online (Sandbox Code Playgroud)

所以,这个工作,但我仍然需要更换toSuccessCallbackStringsendPluginResult,所以我用Google搜索了这一点:

[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
Run Code Online (Sandbox Code Playgroud)

但是我如何evalJSsendPluginResult现在结合?在旧版本中我似乎pluginResult toSuccessCallbackString只是返回了一个NSString*但是现在sendPluginResult似乎有回调涉及?如何管理这个传递的结果sendPluginResultevalJS.

注意:我正在使用cordova api.

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

jce*_*ile 11

用这个:

[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
Run Code Online (Sandbox Code Playgroud)

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

你的javascript应该是这样的:

cordova.exec(successCallback, errorCallback, "YourPluginName", "loadHTML",["yourHtmlString"]);
Run Code Online (Sandbox Code Playgroud)