【发布时间】:2019-04-11 12:51:28
【问题描述】:
我有一个协议和一个要扩展的类。协议需要某种类型的字段,并且该类有一个与此类型的隐式展开可选的名称和类型相同的字段。
这个类可以被这个协议扩展吗?如果是,那么如何?
如果我尝试编写扩展,Xcode 会给出不符合的错误。但是如果我将该字段添加到扩展中,它会给出重新声明的错误。
protocol Named {
var name: String { get }
}
class Person {
var name: String!
}
extension Person: Named {
// Type 'Finances.Account' does not conform to protocol 'Named'
}
【问题讨论】:
-
好吧,我会问一个显而易见的问题,类属性必须以这种方式声明的任何原因?
-
@JoakimDanielson,可能不打扰初始化。
-
@JoakimDanielson 它已由其他开发人员完成
-
您可以为 Person 类创建一个包装类并让该类符合 Named 协议,但这感觉像是一个糟糕的解决方法。
标签: swift swift-protocols swift-extensions