冗余一致性错误消息Swift 2

我把我的项目更新到了Swift 2,并且收到了redundant conformance of XXX to protocol YYYredundant conformance of XXX to protocol YYY 。 当一个类符合CustomStringConvertible时,会经常(或总是)发生这种情况。 也有一些与Equatable地方。

 class GraphFeatureNumbersetRange: GraphFeature, CustomStringConvertible { // <--- get the error here ... } 

我怀疑当我执行var description: String { get } ,或协议要求的任何方法时,我不需要明确地符合协议。 我应该遵循fixit说明并删除所有这些? 如果一个类实现所有协议的方法,Swift现在是否会自动推断一致性?

如果一个子类声明与已经从超类inheritance的协议一致,你将在Xcode 7(Swift 2)中得到这个错误信息。 例:

 class MyClass : CustomStringConvertible { var description: String { return "MyClass" } } class Subclass : MyClass, CustomStringConvertible { override var description: String { return "Subclass" } } 

错误日志显示:

 main.swift:10:27:错误:'Subclass'对协议'CustomStringConvertible'的冗余一致性
类子类:MyClass,CustomStringConvertible {
                           ^
 main.swift:10:7:注意:“子类”从超类inheritance符合协议“CustomStringConvertible”
类子类:MyClass,CustomStringConvertible {
       ^

从子类声明中删除协议一致性解决了这个问题:

 class Subclass : MyClass { override var description: String { return "Subclass" } } 

但是超类必须明确声明一致性,它不是从description属性的存在中自动推断的。

对于谷歌来说,当我在testing目标中包含SwiftyJson并添加一个swifttesting类时,我也遇到了这个错误,因为它导致了SwiftyJson再次被编译,并且它声明NSNumber为Comparable。 解决scheme只是将其包含在应用程序目标中。