CarViewController
は車のプロパティでCar
を受け取るだけであることをコンパイラによって保証したいと思います。Swiftのメソッドやプロパティをオーバーライドするときの多態性
を考えると、次のSWIFTコード例:
class Vehicle {
func doSomething(){}
}
class Car: Vehicle {
func doCarThings(){}
}
class VehicleViewController<T:Vehicle> : UIViewController {
var vehicle : T!;
override func viewDidLoad() {
super.viewDidLoad();
vehicle.doSomething();
}
}
class CarViewController:VehicleViewController<Car> {
override func viewDidLoad() {
super.viewDidLoad();
vehicle.doCarThings();
}
}
それは正しいが、使用している:私は、ジェネリックベースのアプローチを試みたCannot override mutable property 'vehicle' of type 'Vehicle!' with covariant type 'Car!'
:私は次のエラーを取得する
class Vehicle {
func doSomething(){}
}
class Car: Vehicle {
func doCarThings(){}
}
class VehicleViewController : UIViewController {
var vehicle : Vehicle!;
override func viewDidLoad() {
super.viewDidLoad();
vehicle.doSomething();
}
}
class CarViewController:VehicleViewController {
var vehicle: Car!
override func viewDidLoad() {
super.viewDidLoad();
vehicle.doCarThings();
}
}
ストーリーボードのクラスのジェネリックスはエラーになります(なぜなら、それらは目的に合わせてコンパイルされるからです)。
ジェネリックを使用せずにどうすればいいですか?
ありがとうございます!
可能Dublicate http://stackoverflow.com/questions/24094158/overriding-superclass-property-with-different-type-in-swift –