Swift嵌套map使用报编译错误,如何将内层index移到外层解决问题
问题修复方案
错误原因
- 变量名拼写错误:外层闭包参数声明为
index1,代码中误用了未定义的index访问数组 - 结构体名大小写不匹配:定义的结构体为
DataModel,实例化时错误写为小写datamodel,且参数传递顺序不符合结构体定义 - 属性名误用:DataModel2的定义属性为
image2、name2,实例化时错写为image、name - 数据源误用:生成DataModel2时按照需求应该用array3、array4,原代码错用了array1、array2
- 嵌套map表达式复杂度超过编译器类型推断阈值,触发拆分提示
修正方案(按照编译器提示拆分表达式)
先单独生成DataModel2数组,再传入DataModel的构造参数,避免嵌套复杂表达式:
// 第一步:提前生成DataModel2数组,拆分复杂逻辑 let dataModel2List = (0..<array3.count).map { index2 in DataModel2(image2: array3[index2], name2: array4[index2]) } // 第二步:生成外层DataModel数组 let convermodel = (0..<array1.count).map { index1 in DataModel( image: array1[index1], name: array2[index1], dataModel2: dataModel2List ) }
如果不同的DataModel需要对应不同的DataModel2数组,你可以根据业务逻辑调整内层数据源的取值即可。
内容的提问来源于stack exchange,提问作者fatdrogen
相关产品推荐
相关产品推荐

