'title'的类型与协议'MKAnnotation'所需的选项不同

Ade*_*ici 10 iphone mapkit ios swift ios9.1

我在swift中遵循了Ray Wenderlich MapKit教程:http://www.raywenderlich.com/90971/introduction-mapkit-swift-tutorial ,当我创建Artwork类时,我得到了标题中写的错误.我不知道自己要做什么.这是代码:

class Artwork: NSObject, MKAnnotation {
let title: String
let locationName: String
let discipline: String
let coordinate: CLLocationCoordinate2D

init(title: String, locationName: String, discipline: String, coordinate: CLLocationCoordinate2D) {
    self.title = title
    self.locationName = locationName
    self.discipline = discipline
    self.coordinate = coordinate

    super.init()
}
}
Run Code Online (Sandbox Code Playgroud)

请帮忙!

aya*_*aio 19

anser在文档中:我们在MKAnnotation协议参考页面上看到该属性title必须是可选的.

这正是错误消息告诉您的:可选性title不正确.

相应地改变它:

class Artwork: NSObject, MKAnnotation {

    var title: String?
    let locationName: String
    let discipline: String
    let coordinate: CLLocationCoordinate2D

    init(title: String, locationName: String, discipline: String, coordinate: CLLocationCoordinate2D) {
        self.title = title
        self.locationName = locationName
        self.discipline = discipline
        self.coordinate = coordinate

        super.init()
    }

}
Run Code Online (Sandbox Code Playgroud)

ProTip:在Xcode中,CMD + CLICK您的对象或定义(MKAnnotation在您的情况下),以查看协议的声明方式及其要求.