我使用以下代码从集合中获取元素:
modelCollec[indexPath].model
我希望将所有模型都放在一个数组中。有功能还是我应该写一个循环?
只有一行,因此indexPath始终为[0, index]
。
答案 0 :(得分:3)
使用flatMap
。
let modelArray = modelCollec.flatMap { $0.model }
modelArray类型为[model]
。
struct Person {
var name: String
}
现在,如果你有person
的数组,并且你需要name
的数组,你就可以像这样使用flatMap
来获取它。
let persons = [Person]()
let nameArray = persons.flatMap { $0.name } //nameArray type is [String]
注意:您也可以使用map
代替flatMap
,但如果您的模型属性是可选的,它会为您提供可选对象,因此它可能包含nil
其中flatMap
忽略nil
对象。
答案 1 :(得分:1)
如果你总是想要访问集合的第一个元素,那么硬编码0索引而不是使用循环是个更好的主意,但是检查nil总是更好。