Вызвать функцию JavaScript (которая находится в параметре) из собственного кода IOS

1

У меня есть функция javascript.

function getState(){
   return "Hello";
}

var cryptico = (function() {

var my = {};

    my.generateRSAKey = function(passphrase, bitlength)
    {
        Math.seedrandom(sha256.hex(passphrase));
        var rsa = new RSAKey();
        rsa.generate(bitlength, "03");
        return rsa;
    }

}());

Если функция снаружи, я могу легко вызвать такую функцию.

NSString *jsPath = [[NSBundle mainBundle] pathForResource:@"cryptico" ofType:@"js"];

NSString *scriptString = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil];

JSContext *context = [[JSContext alloc] init];
context = [[JSContext alloc] init];
[context evaluateScript:scriptString];

JSValue *test10 = context[@"getState"];
JSValue *test11 = [test10 callWithArguments:@[]]; //will be Hello

Но как я могу назвать что-то внутри переменной? Я пробовал много разных способов, но это не нормально.

Теги:

1 ответ

0

Согласно JSValue Apple Documentation:

Блок Objective-C (Swift clousre) и функция javascript должны быть преобразованы друг в друга, используя

valueWithObject:inContext:

для преобразования в JSValue, как это было сделано в вашем коде, и

toObject

для преобразования в его фактический тип, который в этом случае является блоком. Поэтому сначала попробуйте

[test10 toObject];

и сохранить в блок, а затем вызвать блок как обычно

  • 0
    Не могли бы вы подробнее рассказать об этом с помощью кода? Как я могу назвать «generateRSAKey»? Я думаю, что ваш ответ уже очень близок.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню