Sobes.tech
Junior — Middle

Can you explain the concept of Property Wrapper and its advantage when working with properties in Swift?

sobes.tech AI

Answer from AI

Property Wrapper in Swift is a mechanism that allows you to encapsulate the logic for property access within a separate type, which manages reading and writing the value.

Advantages of Property Wrapper:

  • Enables code reuse for validation, storage, transformation, or other operations when accessing a property.
  • Makes the code cleaner and more convenient by hiding implementation details.
  • Improves code readability and maintainability.

Example:

@propertyWrapper
struct Clamped {
    private var value: Int
    private let range: ClosedRange<Int>

    var wrappedValue: Int {
        get { value }
        set { value = min(max(newValue, range.lowerBound), range.upperBound) }
    }

    init(wrappedValue initialValue: Int, _ range: ClosedRange<Int>) {
        self.range = range
        self.value = min(max(initialValue, range.lowerBound), range.upperBound)
    }
}

struct Settings {
    @Clamped(0...10) var volume: Int = 5
}

var settings = Settings()
settings.volume = 15
print(settings.volume) // Will output 10, as the value is limited to the range

In this example, Clamped ensures that the value of the volume property always stays within the specified range.