Кастинг MKPointAnnotation Fails

Я пытаюсь преобразовать переменную с именем аннотации типа MKPointAnnotation (и внутри функции mapview) к типу CustomPointAnnotation, который является классом, который я создал, который простирается от MKPointAnnotation,

Вот строка кода, которая делает это:

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)."

Буду очень признателен за вашу помощь, спасибо.

Изображение линии, на которой возникает ошибка: введите описание изображения здесь Изображение ошибки в консоли: введите описание изображения здесь

Это весь метод 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 ответов

Другие вопросы по тегам