MST
星途 面试题库

面试题:Objective-C与JavaScriptCore交互中如何传递数组数据

在Objective-C与JavaScriptCore交互场景下,假设你在Objective-C端有一个NSArray数组,数组元素为NSString类型的字符串,现在要将这个数组传递给JavaScript端并能正确解析使用,描述实现这个过程的关键步骤和代码示例。
16.8万 热度难度
编程语言Objective-C

知识考点

AI 面试

面试题答案

一键面试
  1. 关键步骤
    • 在Objective - C端,需要将NSArray转换为JSValue对象,这是因为JavaScriptCore框架中,Objective - C与JavaScript交互通过JSValue来传递数据。
    • 创建JSContext对象,它是Objective - C与JavaScript交互的上下文环境。
    • 将转换后的JSValue对象传递给JavaScript代码,并在JavaScript端接收和使用。
  2. 代码示例
    • Objective - C代码
#import <JavaScriptCore/JavaScriptCore.h>

// 创建一个NSString类型字符串的NSArray
NSArray *stringArray = @[@"apple", @"banana", @"cherry"];

// 创建JSContext
JSContext *context = [[JSContext alloc] init];

// 将NSArray转换为JSValue
JSValue *jsArray = [JSValue valueWithObject:stringArray inContext:context];

// 在JavaScript中执行代码,并传递数组
context[@"jsFunction"] = ^(JSValue *arg) {
    NSLog(@"JavaScript function called with argument: %@", arg);
};
context[@"jsArray"] = jsArray;
[context evaluateScript:@"jsFunction(jsArray)"];
  • JavaScript代码(在Objective - C中通过evaluateScript执行)
function jsFunction(arr) {
    for (var i = 0; i < arr.length; i++) {
        console.log(arr[i]);
    }
}