转换MKPointAnnotation失败

时间:2016-08-09 13:05:37

标签: swift mkpointannotation

我正在尝试通过类型为MKPointAnnotation(并且在mapview函数内)的注释名称将变量强制转换为CustomPointAnnotation类型,这是我创建的类MKPointAnnotation。 1}}。

以下是执行此操作的代码行:

let ca = annotation as! CustomPointAnnotation

这是CustomPointAnnotation的实现:

class CustomPointAnnotation: MKPointAnnotation {
    var image = UIImage()
}

但是当我这样做时,我在这里显示的第一行(让ca = ....)上出现运行时错误:

"Could not cast value of type 'NSKVONotifying_MKPointAnnotation' (0x7ff93d91fea0) to 'ParseStarterProject_Swift.CustomPointAnnotation' (0x1056c1f00)."

非常感谢你的帮助,谢谢。

发生错误的行的图像: enter image description here 控制台中的错误图像: enter image description here

这是发生错误的整个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)
}

0 个答案:

没有答案