繁体   English   中英

协议中定义的 var 不符合多个协议

[英]var defined in protocol doesn't conform to multiple protocol

我正在为 Swift 中的协议苦苦挣扎。 我定义了一个这样的协议:

protocol AProtocol {
    var property : BProtocol {get set}
}

我想在一个类中符合AProtocol ,其属性也符合另一个协议 我试过这两种方式:

class AClass: AProtocol {
   var property = BClass()
}

和:

class AClass: AProtocol {
   var property: BProtocol & MyBClassType = BProtocol()
}

但它们似乎都不起作用(BClass 本身向 BProtocol 确认)这个问题有点难以解释,我希望它很清楚。

这是 Swift 语言的限制吗? 你知道解决这个问题吗?

您有两个问题:首先,属性名称必须与协议中声明的名称匹配,其次,您需要将变量类型注释为BProtocol类型,如 Hamish 在评论中解释的那样。

protocol AProtocol {
    var aProperty : BProtocol {get set}
}

protocol BProtocol {}
class BClass: BProtocol {}

class AClass: AProtocol {
    var aProperty: BProtocol = BClass()
}

您还应该遵守 Swift 命名约定,即变量名称的AProperty ,因此我将AProperty更改为正确的形式aProperty

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM