美文网首页
oc与js的交互

oc与js的交互

作者: 看个客人 | 来源:发表于2017-02-09 09:34 被阅读17次

    在认识JavaScriptCore之前,我一直以为oc和js的交互一定要通过webview才能实现,下面直接请看代码。
    1,我们需要获取文件路径和读取文件内容

     NSString *jsPath = [[NSBundle mainBundle] pathForResource:@"pwd-encryption"ofType:@"js"];
         NSString *jsMethod = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil];
    

    2.创建一个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可以转化为任意类型了。注意传参一定要用“\”隔开。

    相关文章

      网友评论

          本文标题:oc与js的交互

          本文链接:https://www.haomeiwen.com/subject/znciittx.html