如何展平自定义对象 [[CustomModel?]] 的数组?

How to Flatten Array of Array of custom Object [[CustomModel?]]?

我只有Swift的基础知识。 我想把 var dataSource:[[CustomModel?]]? 改成 [CustomModel].

我尝试了以下方法

  1. 设平 = dataSource.reduce([],+)
  2. 放平 = dataSource.flatMap { $0 }
  3. 放平 = dataSource.compactMap{ $0 }
  4. 让平 = dataSource.Array(dataSource.joined())

我遇到错误

无法将类型“[FlattenSequence<[[CustomModel?]]>.Element]”(又名 'Array<Optional< CustomModel >>')的值转换为预期的参数类型“[CustomModel]”

你可以试试

var arr:[CustomModel] = dataSource?.flatMap { [=10=] } ?? [] 

还有

var arr:[CustomModel] = dataSource?.flatMap { [=11=] }.compactMap{ [=11=] } ?? [] 

您需要先使用 flatMap{} 扁平化嵌套数组,然后使用 compactMap{} 获取非可选值。假设输入数组是 [[Int?]]

let value:[Int] = dataSource.flatMap{[=10=]}.compactMap{ [=10=] } //Correct

其他选项会报错-

let value:[Int] = dataSource.flatMap{ [=11=] } ?? [] //Error

//正确

//错误