我正在尝试设置一个继承自 MKPolygon 的类,如下所示,但编译器拒绝我的调用super.init()
并显示以下错误消息:
必须调用超类“MKPolygon”的指定初始化程序
指定的初始化器是做什么用的MKPolygon
?
按照这个答案和这个的建议,我搜索了类文档。有四个可用的初始化器,但它们都被声明为便利初始化器。
- 初始化(点:UnsafePointer,计数:Int)
- init(点:UnsafePointer,计数:Int,interiorPolygons:[MKPolygon]?)
- init(坐标:UnsafePointer,计数:Int)
- init(坐标:UnsafePointer,计数:Int,interiorPolygons:[MKPolygon]?)
我对 Swift 还很陌生,所以我确信我缺少一些简单的东西。
如果有帮助,我的子类实现如下。
import MapKit
import UIKit
class AudioGuideRegionAnnotation: MKPolygon {
// MARK: - Properties
let color: UIColor
let image: UIImage?
// MARK: - Initializers
init(region: AudioGuideRegion) {
var locations = region.locations
super.init(coordinates: &locations, count: locations.count) // <-- rejected with "Must call a designated initializer of the superclass 'MKPolygon'"
self.title = region.title
self.subtitle = "\(Int(round(Double(region.duration / 60)))) minutes"
self.color = .black
self.image = region.images.first?.image
super.init()
}
}