我在协议中使用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”是仅获取属性
如何正确设置?
EDIT
viewModel
的初始化是通过factory based dependency injection
完成的>
protocol MainViewModelInjected {
var mainViewModel: MainViewModelProtocol { get }
}
extension MainViewModelInjected {
var mainViewModel: MainViewModelProtocol { return MainViewModel.instance }
}
我在协议中使用get set时感到困惑。只使用get可以很好地工作,但是set部分却不能。协议MainViewModelProtocol {var localDoor:LocalDoorCoreDataObject {获取设置}}扩展名...