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 = falseWhen 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.