Я в замешательстве при использовании get set
в протоколах. Использование только get
работает нормально, но set
часть не делает.
protocol MainViewModelProtocol {
var localDoor: LocalDoorCoreDataObject { get set }
}
extension MainViewModelProtocol {
var localDoor: LocalDoorCoreDataObject {
get { return MainViewModel.instance.localDoor }
set { localDoor = newValue }
}
}
final class MainViewModel: MainViewModelProtocol {
var localDoor: LocalDoorCoreDataObject = LocalDoorCoreDataObject()
...
Затем, когда я использую его в viewController
self.mainViewModel.localDoor = $0
Но это дает мне ошибка
Невозможно присвоить свойству: 'mainViewModel' является свойством только для получения
Как правильно настроить его?
РЕДАКТИРОВАТЬ
Инициирование viewModel
выполняется с factory based dependency injection
protocol MainViewModelInjected {
var mainViewModel: MainViewModelProtocol { get }
}
extension MainViewModelInjected {
var mainViewModel: MainViewModelProtocol { return MainViewModel.instance }
}