2016-06-24 143 views
4

你如何計算Swift中一個類的實例數?我有以下類:計數一個類的實例數swift

class car { 
    static var carPopulation: Int = 0 
    var color: String 
    var capacity: Int 
    var driver: Bool? 
    var carOn: Bool = false 
    init (carColor: String, carCapacity: Int) { 
     self.capacity = carCapacity 
     self.color = carColor 
     carPopulation ++ //##########GIVES ME ERROR############# 
    } 
    func startCar() { 
     self.carOn = true 
    } 
} 

class raceCar : car { 
    var nitro: Bool 
    init(carColor: String, carCapacity: Int, hasNitro: Bool) { 
     self.nitro = hasNitro 
     super.init(carColor: carColor, carCapacity: carCapacity) 
    } 
} 

car.CarPopulation //outputs 0 in xcode playground 

我假設我需要一個函數實際返回的值,但我想櫃檯每增加創建類的實例的時間。

我得到以下錯誤:

error: static member 'carPopulation' cannot be used on instance of type 'car'

+3

'Car.carPopulation + = 1'? (注意類名應以大寫字母開頭,'++'已棄用) – Hamish

回答

8

裏面初始化方法,你必須添加一個到您的靜態無功與

Car.carPopulation += 1 

而且必須實現德deinitializer刪除是怎麼回事車子實體消失

deinit 
{ 
    Car.carPopulation -= 1 
} 
+0

哦,真的,就是這樣......這是因爲carPopulation是靜態的這一事實嗎? –

1

需要調用car.carpopulation + = 1作爲carpopulation綁定到級車。

這裏是工作的代碼

var str = "Hello, playground" 

class car { 
    static var carPopulation: Int = 0 
    var color: String 
    var capacity: Int 
    var driver: Bool? 
    var carOn: Bool = false 
    init (carColor: String, carCapacity: Int) { 
     self.capacity = carCapacity 
     self.color = carColor 
     car.carPopulation += 1 //no longer an error! 
    } 
    func startCar() { 
     self.carOn = true 
    } 
} 

class raceCar : car { 
    var nitro: Bool 
    init(carColor: String, carCapacity: Int, hasNitro: Bool) { 
     self.nitro = hasNitro 
     super.init(carColor: carColor, carCapacity: carCapacity) 
    } 
} 

car.carPopulation //outputs 0 in xcode playground 

// now initialize a car 
var raceC = raceCar(carColor: "black", carCapacity: 4, hasNitro: false) 

// check again 
car.carPopulation