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
相关产品推荐
相关产品推荐

