在Swift中是否有一种简便的方法来做类似的事情?
var serviceTypes = [String]()
for menu in menus {
if let serviceType = menu.serviceType {
serviceTypes += [serviceType]
}
}
答案 0 :(得分:1)
在您的情况下,由于仅在serviceType
不为空时才添加到另一个数组,因此请使用compactMap(_:)
。
如果您使用的是Swift 5.2或更高版本,请you can do this with KeyPath
s:
let serviceTypes = menus.compactMap(\.serviceType)
如果您使用的是5.2之前的Swift版本,则可以使用闭包:
let serviceTypes = menus.compactMap { $0.serviceType }
答案 1 :(得分:1)
flatMap()
是你的朋友! (并且有compactMap()
和var serviceTypes = menus.compactMap {$0.serviceType}
个朋友。)
{{1}}