You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 03:24:59