我如何开始使用协议?

问题描述 投票:0回答:1

我在协议中使用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 {获取设置}}扩展名...

ios swift compiler-errors protocols
1个回答
0
投票

TL; DR

© www.soinside.com 2019 - 2024. All rights reserved.