类中的默认值

时间:2016-04-28 23:21:46

标签: ios swift

让我们说我有以下课程:

class car {
    var brand = ["BWM", "Ford", "Audi","Toyota"
    var color = ["Red", "Blue", "White", "Black"
    var speed = Double()
    var weight = Double()
}

我有一个UITableView,允许用户添加一行,并根据品牌选择一辆新车。

现在让我们说所有宝马都是红色的,所以颜色设置为红色。 我想我可以通过添加:

来实现这一目标
Init(){
If brand == "BMW"{
color = "red"}

但我也希望为其他品牌设置默认值,这似乎是很长的做事方式。有更简单的方法吗?

2 个答案:

答案 0 :(得分:0)

您还可以声明一个新类BMW,它是汽车的子类,并在init方法中将颜色设置为红色。

答案 1 :(得分:0)

我认为你应该重新评估你的课程。单个车没有多个品牌,因此您的brand属性应该是枚举,就像您的颜色一样。

一旦定义了Car类,那么BMW就是Car的子类,您可以在其中覆盖初始化行为:

enum CarBrand {
    case BMW
    case Ford
    case Audi
    case Toyota
}

enum CarColor {
    case Red
    case Blue
    case White
    case Black
}

class Car {
    var brand: CarBrand
    var color: CarColor
    var weight: Double
    var maxSpeed: Double

    init(brand: CarBrand, color: CarColor, weight: Double, maxSpeed: Double) {
        self.brand = brand
        self.color = color
        self.weight = weight
        self.maxSpeed = maxSpeed
    }
}

class BMWCar : Car {
    init(weight: Double, maxSpeed: Double) {
        super.init(brand: .BMW, color: .Red, weight: weight, maxSpeed: maxSpeed)
}


let aCar = Car(brand: .Audi, color: .Blue, weight: 1760, maxSpeed: 200)

let aBMWCar = BMWCar(weight: 1800, maxSpeed: 220)

严格来说Car应该是一个抽象类,但Swift不直接支持。