将数组/对象从Javascript传递到Objective-C

时间:2014-09-18 08:00:53

标签: javascript objective-c macos cocoa webview

我的问题应该很简单回答,但我似乎无法在Apple's documentation中找到任何内容

从我的JS代码我调用带有数组参数的Objective-C函数。 E.g:

ObjC.someFunction_([1,2,3]);

现在,在Objective-C中,我们有:

- (void)someFunction:(WebScriptObject*)arr
{

}

正如Apple所说。 (如果它是一个简单的字符串那么这是一个完全不同的 - 更简单的故事)。

问题是:如何将此WebScriptObject转换为NSArray

1 个答案:

答案 0 :(得分:0)

只是想到一个工作正常的解决方法(虽然它仍然是解决方法):

在JS中:

ObjC.someFunction_(JSON.stringify([1,2,3]));

在Objective-C中:

- (void)someFunction:(NSString*)arrStr
{
    NSArray* arr = [NSJSONSerialization JSONObjectWithData:[arrStr dataUsingEncoding:NSUTF8StringEncoding] 
                                                   options:kNilOptions 
                                                     error:nil];
}

在示意图中:

  • Javascript - >对象为Json - > Objective-C - > Json to Object

P.S。我敢肯定必须有更优雅的方法(通过几乎没有记录的JavaScriptCore或许?),但这个方法仍然有效! ; - )