Swift - 如何使用新属性添加扩展现有类?

Ale*_*y K 5 inheritance swift

我想创建一个 GMSMarker 的子类。它使用一个属性进行初始化,即position: CLLocationCoordinate2D. 它还具有可以像这样设置的属性

let position = CLLocationCoordinate2DMake(51.5, -0.127)
let london = GMSMarker(position: position)
london.title = "London"
london.icon = UIImage(named: "house")
london.map = mapView
Run Code Online (Sandbox Code Playgroud)

我想添加新属性 rating

我试过这样

class Marker: GMSMarker {

var rating:Int

init(rating: Int){
    self.rating = rating
    super.init()
}

}
Run Code Online (Sandbox Code Playgroud)

但它不允许rating使用点符号为属性赋值

我怎样才能做到这一点 ?

The*_*tor 0

更改如下:

    var rating : Int = 0

convenience init(rating: Int){
    self.init()
    self.rating = 2

}
Run Code Online (Sandbox Code Playgroud)

Swift 要求在创建实例之前完全初始化所有属性。

此外,当您编写便利初始值设定项时,就像您在此处所做的那样,便利初始值设定项只能调用同一类中的另一个便利初始值设定项或指定的初始值设定项。

  • 在这种情况下,“self.init()”将不起作用,因为 GMSMarker 在其初始化程序中有一个必需的“position”参数。 (2认同)