我将我的项目更新为 Swift 2,并收到了一堆 redundant conformance of XXX to protocol YYY
。当类符合 CustomStringConvertible
时,这种情况尤其经常(或总是)发生。还有一些地方有 Equatable
。
class GraphFeatureNumbersetRange: GraphFeature, CustomStringConvertible { // <--- get the error here
...
}
我怀疑在实现 var description: String { get }
或协议(protocol)要求的任何方法时,我不需要明确遵守协议(protocol)。我应该只按照 fixit 说明删除所有这些吗?如果一个类实现了协议(protocol)的所有方法,Swift 现在会自动推断一致性吗?
最佳答案
如果子类声明一致性,您将在 Xcode 7 (Swift 2) 中收到该错误消息 到已经从父类(super class)继承的协议(protocol)。示例:
class MyClass : CustomStringConvertible {
var description: String { return "MyClass" }
}
class Subclass : MyClass, CustomStringConvertible {
override var description: String { return "Subclass" }
}
错误日志显示:
main.swift:10:27: error: redundant conformance of 'Subclass' to protocol 'CustomStringConvertible' class Subclass : MyClass, CustomStringConvertible { ^ main.swift:10:7: note: 'Subclass' inherits conformance to protocol 'CustomStringConvertible' from superclass here class Subclass : MyClass, CustomStringConvertible { ^
Removing the protocol conformance from the subclass declaration solves the problem:
class Subclass : MyClass {
override var description: String { return "Subclass" }
}
但是父类(super class)必须显式地声明一致性,它是
不会根据 description
的存在自动推断出
属性(property)。
关于xcode - 冗余一致性错误消息 Swift 2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30867937/