如何展平自定义对象 [[CustomModel?]] 的数组?
How to Flatten Array of Array of custom Object [[CustomModel?]]?
我只有Swift的基础知识。
我想把 var dataSource:[[CustomModel?]]?
改成 [CustomModel]
.
我尝试了以下方法
- 设平 = dataSource.reduce([],+)
- 放平 = dataSource.flatMap { $0 }
- 放平 = dataSource.compactMap{ $0 }
- 让平 = 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
//正确
//错误
我只有Swift的基础知识。
我想把 var dataSource:[[CustomModel?]]?
改成 [CustomModel]
.
我尝试了以下方法
- 设平 = dataSource.reduce([],+)
- 放平 = dataSource.flatMap { $0 }
- 放平 = dataSource.compactMap{ $0 }
- 让平 = 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
//正确
//错误