Reactive Swift: Access Control for Mutable Properties
Swift’s access control allows us to define separate access levels for the getter and setter of a property. This is nice if we want to provide read access to a property but should only be able to modify it internally:
private(set) var isLoading = false
When using ReactiveSwift (or similarly RxSwift) you usually work with MutableProperty
. In order to limit modification of the property’s value
we can create a private writable MutableProperty
and a public read-only Property
:
private let isLoadingMutable = MutableProperty(false)
lazy var isLoading: Property<Bool> = Property(self.isLoadingMutable)
The read-only Property
is now dependent on the MutableProperty
and will always reflect it’s value.