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
}
}
ベストアンサー1
- Swiftのすべての初期化メソッドは単に「init」でなければなりません
- MKAnnotationでは、オブジェクトがNSObjectProtocolを継承する必要があります。そのためには、クラスがNSObjectを継承する必要があります。
- プロパティはMKAnnotationプロトコルのプロパティと一致するように宣言する必要があります。
- 本当に必要な場合を除き、パラメータを暗黙的にアンラップされたオプションとして宣言しないでください。ランタイム エラーをスローするのではなく、コンパイラが何かが nil であるかどうかをチェックするようにしてください。
結果は次のようになります:
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
}
}