我正在尝试将 MKPointAnnotation 类型的注释名称(并且位于 mapview 函数内部)的变量转换为 的类型CustomPointAnnotation
,这是我创建的从MKPointAnnotation
.
这是执行此操作的代码行:
let ca = annotation as! CustomPointAnnotation
这是CustomPointAnnotation的实现:
class CustomPointAnnotation: MKPointAnnotation {
var image = UIImage()
}
但是当我这样做时,我在此处显示的第一行 (let ca = ....) 上得到一个运行时错误,它说:
"Could not cast value of type 'NSKVONotifying_MKPointAnnotation' (0x7ff93d91fea0) to 'ParseStarterProject_Swift.CustomPointAnnotation' (0x1056c1f00)."
非常感谢您的帮助,谢谢。
这是发生错误的整个 mapview 方法。注释由函数定义为 MKAnnotation。
func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {
if annotation is MKUserLocation {
return nil
}
let identifier = "MyCustomAnnotation"
var annotationView = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier)
if annotationView == nil {
annotationView = MKAnnotationView(annotation: annotation, reuseIdentifier: identifier)
annotationView?.canShowCallout = true
annotationView!.image = UIImage(named: "RaceCarMan3.png")
} else {
annotationView!.annotation = annotation
}
let ca = annotation as! CustomPointAnnotation
configureDetailView(annotationView!, carImage: ca.imageName)
return annotationView
}
func configureDetailView(annotationView: MKAnnotationView, carImage: UIImage) {
annotationView.detailCalloutAccessoryView = UIImageView(image: carImage)
}