gpt4 book ai didi

ios - 如何使用对象 JSExport Objective-C 方法

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:37:45 25 4
gpt4 key购买 nike

我想通过 Objective-C 编写一个可以导出到 JavaScript 的方法,这样我就可以将 JavaScript 对象放入 native 代码中。例如在下面的代码中: someObject 是一个原生实现的对象,fun 是它的方法。

someObject.fun({ k : 'value1', k2 : 'value2'})

我知道使用JSExport可以将原生方法导出到JavaScript。并成功将 JavaScript 字符串传递给 native 代码 (NSString*)。但是当我想将 JavaScript 对象传递给 native 时,它失败了。

如何解决?

非常感谢

最佳答案

除了您已经观察到的将 javascript 字符串转换为 NSString* 之外,Javascript 对象在传递给您的 objective-c 方法之前被复制到符合 KVC 的 objective-C 对象(本质上是一个 NSDictionary 实例)。

例如,具有以下定义:

@protocol MyJSAPI
- (void)fun:(id)param;
@end
@interface MyObject: NSObject<MyJSAPI>
- (void)fun:(id)param;
@end

和你的 JSContext 的初始化如下:

myjscontext[@"someObject"] = [[MyObject alloc] init];
[myjscontext evaluateScript:@"someObject.fun({ k : 'value1', k2 : 'value2'});

然后您的fun:(id)param 方法可以像这样访问对象的kk2 字段:

@implementation MyObject
- (void)fun:(id)param {
NSString* k = [param valueForKey:@"k"];
NSString* k2 = [param valueForKey:@"k2"];
NSLog(@"k = %@, k2 = %@", k, k2);
}
@end

关于ios - 如何使用对象 JSExport Objective-C 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26795981/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com