2016-06-24 2 views
4

어떻게 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

입니다 그리고 당신은 것입니다 자동차 엔티티를 삭제하는 데 deinitializer를 구현해야합니다 사라지다

deinit 
{ 
    Car.carPopulation -= 1 
} 
+0

오 이런, 그게 ... 이것은 모두 인구 추측이 정적이라는 사실 때문입니까? –

1

당신이 carpopulation로 car.carpopulation + = 1은 클래스 자동차에 바인딩 호출해야합니다. 여기

Car.carPopulation += 1 

와 정적 VAR에 하나를 추가해야 초기화 방법 내부 작업 코드

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 
관련 문제