Unlike other programming languages, there are three types properties in Swift.

Stored Properties

They are constants or variables of a class, and part of the class instances that used to store values. One of the examples is the model class.

class Car {
    var name: String
    var price: Float = 0.0

    init(name: String, price: Float) {
        self.name = name
        self.price = price
    }
}

name and price are stored properties for class Car . We can give stored properties a default value, assign values through initialization and access through .:

let car = Car(name: "Lexus", price: 1000.0)
car.price = 2000.0

Computed Properties

class Car {
    var name: String
    var price: Float = 0.0
    var minPrice: Float = 1000.0
    var maxPrice: Float = 3000.0
    var averagePrice: Float {
        get {
            return (minPrice+maxPrice)/2.0
        }
        
        set {
            self.averagePrice = newValue
        }
    }
    
    init(name: String, price: Float) {
        self.name = name
        self.price = price
    }
}

Computed properties don't store the actual value, but provide a getter for the access or setter for set values. If a computed property only provides a getter which is read only.

Static Properties

Static properties are class related not instance so we can access a static property without creating a class instance. This is useful when you want to define a util class

class CarHelper {
    static var vendors: [String] = ["Lexus", "BMW", "Toyota"]
}

print(Car.vendors)