如何在此代码行中使用可选链接
let sectionNames:[String] = pois.map({ $0.IconName! })
如果我写:
let sectionNames:[String] = pois.map({ $0?.IconName })
我明白了
无法对类型为“ Poi”的非可选值使用可选链接
Poi是一个对象:
public class Poi {
public var Id: Int
public var Name: String?
public var Latitude: Double?
public var Longitude: Double?
public var IconName: String?
}
我想避免使用'!'在任何可以使用的地方
guard let iconname = poi.IconName else { return }
在应用程序的其他部分。 我的问题是如何避免“!”在.filter或.map
中答案 0 :(得分:2)
pois
是Poi
而不是Poi?
的数组。它不是一个可选数组,因此您不能在其元素上使用可选链接。
答案 1 :(得分:2)
您应该使用flatMap
(在Swift 4中为compactMap
)来过滤nil:
let sectionNames = pois.flatMap { $0.IconName }