我在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语言的局限性吗? 您知道解决这个问题的方法吗?
答案 0 :(得分:1)
您有两个问题:首先,属性名称必须与协议中声明的属性名称匹配;其次,您需要输入注释类型为BProtocol
的变量,如Hamish在评论中所述。
protocol AProtocol {
var aProperty : BProtocol {get set}
}
protocol BProtocol {}
class BClass: BProtocol {}
class AClass: AProtocol {
var aProperty: BProtocol = BClass()
}
您还应该遵循Swift命名约定,即变量名称的lowerCamelCase,因此我将AProperty
更改为正确的格式aProperty
。