Как мне настроить работу с протоколами? - PullRequest
0 голосов
/ 22 апреля 2020

Я в замешательстве при использовании 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 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...