我有一个我创建的协议(protocol)(在 Swift 4.2 中),它的要求之一是一个与协议(protocol)本身类型相同的属性。
例如,我有一个这样定义的协议(protocol):
protocol A {
var a: A? { get set }
}
我有几个符合这个协议(protocol)的模型:
class Model1: A {
var a: A?
}
class Model2: A {
var a: A?
}
对于我的一个模型,我需要通过更具体地定义变量 a
的属性(即具有协议(protocol)类型的变量)来满足协议(protocol)要求。因此,例如我可能希望将 Model2
实现为:
class Model2: A {
var a: Model1?
}
在这种情况下,由于 Model1
符合协议(protocol) A
,您可能希望它能够满足协议(protocol)要求,但是我得到了一个错误:
Type 'Model2' does not conform to protocol 'A'
为什么会发生这种情况,我该怎么做才能让它像上面描述的那样工作?
附录
最佳答案
为了符合协议(protocol) A,Model2
需要一个成员 var a
允许存储对符合协议(protocol) A 的任何的引用,而不是只是对 Model1
的引用。所以你不能这样做。
关于swift - 需要通过使用需求的特定子类(或符合它的类型)来满足 Swift 协议(protocol)需求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55231410/