2014-06-15 11 views
33

Non sono sicuro di come annotare una mappa nella lingua swift. Non so come creare la classe NSObject. Il codice seguente è ho provato ma era in grado di eseguire:MKAnnotation Swift

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 
    } 
} 
+0

Dovete darci qualche idea del motivo per cui si erano in grado di eseguirlo. Che tipo di errore hai incontrato? Come stai cercando di usarlo? –

risposta

86
  1. Tutti i metodi di inizializzazione a Swift devono essere semplicemente "init"
  2. MKAnnotation richiede che l'oggetto eredita da NSObjectProtocol. Per fare questo, si dovrebbe avere la vostra eredita dalla classe NSObject
  3. Si dovrebbe dichiarare le proprietà che corrispondano a quelli del protocollo MKAnnotation
  4. Non si dovrebbe dichiarare i parametri come implicitamente non imbustati Optional a meno che non si hanno veramente a. Lascia che il compilatore verifichi se qualcosa è nullo invece di generare errori di runtime.

Questo vi dà il risultato:

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 
    } 
} 
+0

Grazie mille :) –

Problemi correlati