用子类重写Swift属性

用子类重写Swift属性,swift,properties,overriding,Swift,Properties,Overriding,我想重写子体属性,因为我想直接使用TestViewModel类中的方法,而不必将ViewModel强制转换为TestViewModel。 我想这是不可能的。你能提出一些好的解决办法吗。代码和错误如下: class ViewModel { } class View: UIView { weak var viewModel: ViewModel! } class TestViewModel { } class TestView: View { weak var viewMode

我想重写子体属性,因为我想直接使用
TestViewModel
类中的方法,而不必将
ViewModel
强制转换为
TestViewModel
。 我想这是不可能的。你能提出一些好的解决办法吗。代码和错误如下:

class ViewModel {
}

class View: UIView {
    weak var viewModel: ViewModel!
}

class TestViewModel {
}

class TestView: View {
    weak var viewModel: TestViewModel! // error here
}
出现以下错误:

/用户/evgeniirtishchev/Documents/Development/rdfuturesales/RDProject/View/Identification/IdentificationView。swift:12:26: 无法重写类型为“viewModel!”的可变属性“viewModel!”具有 协变类型“IdentificationViewModel!”


Swift不允许您更改任何变量或属性的类类型


请参阅相关问题:

Swift不允许您更改任何变量或属性的类类型


参见相关问题:

您是指上面的
类测试视图:视图吗?(而不是
..:UIView
)@dfri是的,对不起,您的意思是上面的
类TestView:View
?(而不是
…:UIView
)@dfri是,对不起,输入错误