如何将两个字符串数组合并为指定datamodel结构类型的数组
解决方法
你可以使用zip函数配合map高阶函数快速完成转换,代码如下:
let array1 = ["one","two","three"] let array2 = ["one","two","three"] struct datamodel: Hashable{ var image:String var name:String } // 合并生成目标模型数组 let dataarray = zip(array1, array2).map { datamodel(image: $0, name: $1) }
zip会自动将两个数组的同下标元素配对为元组,map会遍历所有元组并转换为datamodel实例。如果两个数组长度不一致,zip会以较短的数组长度为准,忽略较长数组的多余元素。
如果需要严格保证两个数组长度匹配再转换,可以提前加入长度校验,也可以用更易理解的循环方式实现:
var dataarray = [datamodel]() // 长度校验 guard array1.count == array2.count else { // 此处可替换为你自己的异常处理逻辑 fatalError("两个数组长度不匹配,无法完成转换") } for index in 0..<array1.count { dataarray.append(datamodel(image: array1[index], name: array2[index])) }
补充说明:Swift官方编码规范推荐结构体使用大驼峰命名,你可以把结构体名改为
DataModel更符合通用开发习惯。
内容的提问来源于stack exchange,提问作者fatdrogen
相关产品推荐
相关产品推荐

