【发布时间】:2020-08-11 23:45:22
【问题描述】:
我的猫模型有这个:
var id: Int?
如果我有一组猫,如何获取所有 id 为 7 的猫?我假设我应该使用过滤器方法:
let filteredCats = cats.filter(???)
【问题讨论】:
-
cats.filter { $0.id == 7 }... 虽然您可以使用 Xcode 为您填写的长版本,但两者都可以正常工作
我的猫模型有这个:
var id: Int?
如果我有一组猫,如何获取所有 id 为 7 的猫?我假设我应该使用过滤器方法:
let filteredCats = cats.filter(???)
【问题讨论】:
cats.filter { $0.id == 7 } ... 虽然您可以使用 Xcode 为您填写的长版本,但两者都可以正常工作
除非您没有其他要求,否则应该很简单。
cats.filter { $0.id == 7 }
要跳过可选值,您可以使用compactMap
例如
let array: [Cat] = [
Cat(id: 7, name: "CatA"),
Cat(id: nil, name: "CatB"),
Cat(id: 1, name: "CatC"),
Cat(id: 7, name: "CatD"),
Cat(id: 7, name: "CatE"),
Cat(id: 2, name: "CatF"),
Cat(id: nil, name: "CatG"),
]
print(array.compactMap { value -> Cat? in
guard let id = value.id, id > 2 else { return nil }
return value
})
【讨论】: