2014-06-15 9 views
33

Nie jestem pewien, jak opisywać mapę w szybkim języku. Nie wiem, jak utworzyć klasę NSObject. Poniższy kod próbowałem, ale nie był w stanie uruchomić:MKAnnotacja 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

trzeba dać nam jakiś pomysł, dlaczego nie udało się go uruchomić. Jakiego rodzaju błędu napotkałeś? Jak próbujesz tego użyć? –

Odpowiedz

86
  1. Wszystkie metody inicjalizacji w Swift musi po prostu być „init”
  2. MKAnnotation wymaga, aby przedmiot dziedziczą NSObjectProtocol. Aby to zrobić, trzeba mieć swoje klasy Dziedziczy z NSObject
  3. powinien zadeklarować swoje właściwości zgodne z ustawieniami protokołu MKAnnotation
  4. Nie należy zadeklarować parametry niejawnie rozpakowanego opcjonalne, chyba że naprawdę musisz. Pozwól kompilatorowi sprawdzić, czy coś jest zerowe, zamiast rzucać błędy środowiska wykonawczego.

To daje wynik:

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

Wielkie dzięki :) –