在認識JavaScriptCore之前颤霎,我一直以為oc和js的交互一定要通過webview才能實現扫尺,下面直接請看代碼墩弯。
1,我們需要獲取文件路徑和讀取文件內容
NSString *jsPath = [[NSBundle mainBundle] pathForResource:@"pwd-encryption"ofType:@"js"];
NSString *jsMethod = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil];
2.創(chuàng)建一個JSContext對象撇叁,然后將js代碼加載到context里面并且讀取這個函數對象。
SContext *context = [[JSContext alloc] init];
JSValue *jsVal = [context evaluateScript:jsMethod];
NSString * jsText =
@"var doEncrypt = function(a,b) {"
@"var f = b;"
@"var i = a;"
@"var g = i;"
@"i += \"\" + f;"
@"try {"
@"g = new RSAKey().encrypt(i)"
@"} catch (h) {"
@"return h;"
@"}"
@"return g;"
@"};";
jsVal = [context evaluateScript:jsText];
3.最后調用callWithArguments這個方法進行參數傳值畦贸。
NSString * pwd = [NSString stringWithFormat:@"\"%@\"",@"506121"];
NSString * code = [NSString stringWithFormat:@"\"%@\"",@"1324465"];
jsVal = [context[@"doEncrypt"] callWithArguments:@[pwd, code]];
獲取到的這個jsVal可以轉化為任意類型了陨闹。注意傳參一定要用“\”隔開。