2014-06-15 50 views
33

我不確定如何用swift語言註釋地圖。我不知道如何創建NSObject類。以下是代碼我嘗試,但無法運行: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

你必須給我們,爲什麼你無法運行它的一些想法。你遇到什麼樣的錯誤?你如何使用這個? –

回答

86
  1. 斯威夫特所有初始化方法必須簡單地是「初始化」
  2. MKAnnotation需要將對象從NSObjectProtocol繼承。要做到這一點,你應該有你的類繼承自NSObject的
  3. 您應該聲明你的屬性以匹配MKAnnotation協議
  4. 的你不應該聲明參數,作爲隱無包裝選配,除非你真的不得不這樣做。讓編譯器檢查是否有零,而不是拋出運行時錯誤。

這給你一個結果:

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

非常感謝:) –