Dato che io vengo da un background di Java non sono un esperto di Objective-C e lottando in tal modo un po 'per modificare il codice seguente:Come sostituire i metodi deprecati inSuccessCallbackString e writeJavascript in 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]];
}
}
Il compilatore si lamenta che sia, writeJavascript
così come toErrorCallbackString
sono deprecati e Dovrei sostituirli con evalJS
e pluginResult
.
Quindi, il mio primo passo è stato quello di cambiare questa linea:
[self writeJavascript: [pluginResult toSuccessCallbackString:callbackId]];
come questo:
[self.commandDelegate evalJs: [pluginResult toSuccessCallbackString:callbackId]];
Quindi, questo ha funzionato, ma ho ancora bisogno di sostituire toSuccessCallbackString
con sendPluginResult
, così ho concentrandoci questa:
[self.commandDelegate sendPluginResult:pluginResult callbackId:callbackId];
Ma come faccio a combinare evalJS
con sendPluginResult
adesso? Nella vecchia versione mi sembrava che pluginResult toSuccessCallbackString
restituisse semplicemente un NSString*
ma ora con sendPluginResult
sembra esserci una richiamata? Come posso gestirlo per passare il risultato di sendPluginResult
a evalJS
.
Nota: sto utilizzando la Cordova api per questo.
Si prega di essere gentile, non ho ancora scritto molto Objective-C e ho difficoltà con la sintassi.
Qual è il metodo di richiamata in cui è possibile chiamare [self.commandDelegate evalJs: javascriptString]; Ho sostituito [pluginResult toErrorCallbackString: command.callbackId] in [self.commandDelegate sendPluginResult: pluginResult callbackId: callbackId]; Ma in quale metodo otterrò la stringa Javascript per chiamare il metodo evalJs. Grazie in anticipo. –
La domanda era su come sostituire il deprecato 'writeJavascript' e la risposta è usare' sendPluginResult' per la domanda use case. Se si desidera utilizzare evalJs, il caso d'uso potrebbe essere diverso. Puoi creare una nuova domanda fornendo maggiori informazioni? – jcesarmobile
Oh oki .. I tgt sendPluginResult è quello di sostituire aErrorCallbackId e toSuccessCallbackId e writeJavascript metodo dovrebbe essere sostituito dal metodo evalJs .. Se sendPluginResult fa il lavoro, allora è quello che mi serviva .. per favore correggimi se la mia comprensione è sbagliata. Grazie! –