我一直在努力实现这段代码。我正在将一些遗留代码转换为 swift,但我无法让 [annotation isKindofClass] 的等效项工作。
最初我做了类似的事情(给了我错误
mapView.annotations.forEach {
if !$0.isKind(of: MKUserLocation) {
self.mapView.removeAnnotation($0)
}
}
但我在 this 上阅读发布那个 swift 有不同的方式来做到这一点。
mapView.annotations.forEach {
if !$0 is MKUserLocation {
self.mapView.removeAnnotation($0)
}
}
这个给我错误:无法将类型 MKAnnotation 的值转换为预期的参数类型 BOOL
最佳答案
public func isKind(of aClass: AnyClass) -> Bool
这个函数需要AnyClass
作为参数,你必须传递一个类,使用.self
mapView.annotations.forEach {
if !$0.isKind(of: MKUserLocation.self) {
self.mapView.removeAnnotation($0)
}
}
当使用is
时,必须用括号将表达式括起来:
mapView.annotations.forEach {
if !($0 is MKUserLocation) {
self.mapView.removeAnnotation($0)
}
}
您正在检查 $0
的 bool 值,而不是 is
表达式,因此出现错误。
关于ios - 如果 _ 是 _ 或 .isKind(of : ),正确的使用方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54713692/