我将我的项目更新为Swift 2,并收到了一堆redundant conformance of XXX to protocol YYY.当一个类符合时,这种情况经常(或总是)发生CustomStringConvertible.还有一些地方Equatable.
class GraphFeatureNumbersetRange: GraphFeature, CustomStringConvertible { // <--- get the error here
...
}
Run Code Online (Sandbox Code Playgroud)
我怀疑在实现时var description: String { get },或者协议所需的任何方法,我都不需要明确地遵守协议.我应该遵循fixit说明并删除所有这些吗?如果一个类实现了所有协议的方法,Swift现在会自动推断出一致性吗?
Mar*_*n R 92
如果子类声明对已经从超类继承的协议的一致性,那么您将在Xcode 7(Swift 2)中获得该错误消息.例:
class MyClass : CustomStringConvertible {
var description: String { return "MyClass" }
}
class Subclass : MyClass, CustomStringConvertible {
override var description: String { return "Subclass" }
}
Run Code Online (Sandbox Code Playgroud)
错误日志显示:
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 {
^
从子类声明中删除协议一致性可以解决问题:
class Subclass : MyClass {
override var description: String { return "Subclass" }
}
Run Code Online (Sandbox Code Playgroud)
但是超类必须明确声明一致性,它不会从description
属性的存在中自动推断出来.
对于googlers,当我在Tests目标中包含SwiftyJson并添加一个swift测试类时,我也遇到了这个错误,因为它导致SwiftyJson再次被编译,并且它将NSNumber声明为Comparable.解决方案是仅将其包含在app目标中.
| 归档时间: |
|
| 查看次数: |
38351 次 |
| 最近记录: |