Подтвердить что ты не робот

MKAnnotation Swift

Я не знаю, как аннотировать карту на быстром языке. Я не знаю, как создать класс NSObject. Следующий код, который я пробовал, но не смог выполнить:

import Foundation
import MapKit
class MapPin : MKAnnotation
{
    var mycoordinate: CLLocationCoordinate2D
    var mytitle: String
    var mysubtitle: String

    func initMapPin (coordinate: CLLocationCoordinate2D!, title: String!, subtitle: String!)
    {
        mycoordinate = coordinate
        mytitle = title
        mysubtitle = subtitle
    }
}
4b9b3361

Ответ 1

  • Все методы инициализации в Swift должны быть просто "init"
  • MKAnnotation требует, чтобы объект наследовал от NSObjectProtocol. Чтобы сделать это, вы должны наследовать свой класс из NSObject
  • Вы должны объявить, что ваши свойства соответствуют параметрам протокола MKAnnotation
  • Вы не должны объявлять свои параметры как неявно отключенные опционы, если вам действительно не нужно. Пусть компилятор проверяет, является ли что-то нуль вместо того, чтобы бросать ошибки времени выполнения.

Это даст вам результат:

class MapPin : NSObject, MKAnnotation {
    var coordinate: CLLocationCoordinate2D
    var title: String?
    var subtitle: String?

    init(coordinate: CLLocationCoordinate2D, title: String, subtitle: String) {
        self.coordinate = coordinate
        self.title = title
        self.subtitle = subtitle
    }
}