如何通过JavaScriptCore将JS对象数组转为Swift原生数组?
问题
借助JavaScriptCore的JSExport可以将JavaScript对象转换为Swift对象,但我无法找到将JavaScript对象数组转换为Swift原生数组的方法,因此想咨询是否遗漏了相关方法,或是该需求暂无法实现。
已尝试方案
测试用JavaScript数组:
const test = [{ value: 'value1' }, { value: 'value2' }]
1. NSArray方案
let jsValue = ... jsValue.toObjectOf(NSArray.self)
该方案的缺点是无法指定NSArray元素对应的JSExport类型,NSArray的元素为字典,效果与jsValue.toArray()基本一致。
2. Array方案
protocol TestExport: JSExport { var value: String { get } } class Test: NSObject, TestExport { let value: String init(value: String) { self.value = value } } let jsValue = ... jsValue.toObjectOf([Test].self)
此代码无法编译,因为[Test].Type不属于AnyClass类型。
3. 第三方库方案
可使用类似KeyValueCoder的库,将toObject()的结果解析为Codable结构体,但因存在额外步骤,不确定这是否为性能最优的方案。
内容的提问来源于stack exchange,提问作者ph1psG
相关产品推荐
相关产品推荐

