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

Swift中如何将自定义结构体数组转换为[[String]]类型?

如何将结构体数组转换为[[String]]类型?

你可以通过map方法遍历结构体数组,将每个结构体的属性逐一转换为String类型,再组合成子数组,最终得到目标的二维字符串数组。

实现代码

var ucetPlatby = [struct_ucetPlatby]()

struct struct_ucetPlatby {
    let id: Int
    let trasaid: Int
    let cena: Decimal
}

override func viewDidLoad() {
    super.viewDidLoad()
    
    ucetPlatby.append(.init(id: 1, trasaid: 1, cena: 33))
    ucetPlatby.append(.init(id: 3, trasaid: 1, cena: 44))
    ucetPlatby.append(.init(id: 4, trasaid: 1, cena: 55))
    
    // 执行转换操作
    let targetArray: [[String]] = ucetPlatby.map { element in
        [
            String(element.id),
            String(element.trasaid),
            String(element.cena)
        ]
    }
    
    print(targetArray)
    // 输出结果:[["1", "1", "33"], ["3", "1", "44"], ["4", "1", "55"]]
}

补充说明

  • map函数会遍历ucetPlatby数组中的每一个结构体元素,对每个元素执行闭包内的转换逻辑。
  • Int类型的id和trasaid可以直接通过String()初始化器转换为字符串;如果需要对Decimal类型的cena做自定义格式处理(比如保留指定小数位数),可以使用NumberFormatter:
// 自定义Decimal格式示例
let formatter = NumberFormatter()
formatter.numberStyle = .decimal
formatter.maximumFractionDigits = 2 // 最多保留两位小数

let targetArray: [[String]] = ucetPlatby.map { element in
    let cenaStr = formatter.string(from: element.cena as NSDecimalNumber) ?? String(element.cena)
    return [String(element.id), String(element.trasaid), cenaStr]
}

内容的提问来源于stack exchange,提问作者Karel Endrst

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 15:43:13