Swift 无法使用另一个符合协议来符合协议
我遇到了以下代码,不知道为什么它不能编译:Swift 无法使用另一个符合协议来符合协议,swift,Swift,我遇到了以下代码,不知道为什么它不能编译: 协议CellDelegate:类{} 协议删除CellViewModel{ 变量委托:CellDelegate?{get} } 协议产品CellViewModelDelegate:CellDelegate{} //错误:类型“ProductCellViewModel”不符合协议“DelegatingCellViewModel” 类ProductCellViewModel:DelegatingCellViewModel{ 弱var委托:ProductCe
协议CellDelegate:类{}
协议删除CellViewModel{
变量委托:CellDelegate?{get}
}
协议产品CellViewModelDelegate:CellDelegate{}
//错误:类型“ProductCellViewModel”不符合协议“DelegatingCellViewModel”
类ProductCellViewModel:DelegatingCellViewModel{
弱var委托:ProductCellViewModelDelegate?
}
完整错误消息:
error: Playground.playground:9:7: error: type 'ProductCellViewModel' does not conform to protocol 'DelegatingCellViewModel'
class ProductCellViewModel: DelegatingCellViewModel {
^
Playground.playground:10:14: note: candidate has non-matching type 'ProductCellViewModelDelegate?'
weak var delegate: ProductCellViewModelDelegate?
^
Playground.playground:4:9: note: protocol requires property 'delegate' with type 'CellDelegate?'; do you want to add a stub?
var delegate: CellDelegate? { get }
^
这是语言限制还是我遗漏了什么?
该如何编写此代码以使其编译并保持原意?您需要更改委托类型或添加协议存根
class ProductCellViewModel: DelegatingCellViewModel {
weak var delegate: CellDelegate?
}
或
您必须像这样更改该特定委托的名称。因为一致性协议已经使用了代理名称-
class ProductCellViewModel: DelegatingCellViewModel {
var delegate: CellDelegate?
weak var productDelegate: ProductCellViewModelDelegate?
}
您能发布准确的错误消息吗?@shivi_shub补充道,原因可能是它不够强大?事实上,错误消息非常具有描述性。@AndreyChernukha不,这没有什么区别不幸的是,这种方法失去了更具体的委托类型
ProductCellViewModelDelegate
。有没有办法写下代码,这样我就可以保存它?@Nikitakushkin检查编辑后的答案。