[英]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.