xcode - 冗余一致性错误消息 Swift 2

标签 xcode swift

我将我的项目更新为 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/

相关文章:

ios - 奇怪的 UICollectionView 选择行为

c - 在 xcode 中运行测试时,在 NSObject.h、NSObjCRuntime.h 等类中出现错误

xcode - 使用 Swift 列出 iTunes 共享文件夹中的文件

c - 在 xcode 中创建命令行程序时如何静态链接到库?

ios - 更改细节过渡动画 UISplitViewController

ios - 在 OS X 上使用 ndenv 设置 React Native

ios swift制作表列表不断收到关于nill的错误

ios - 模拟 API 测试的 URLSession 是将无法识别的选择器发送到实例

python - 如何在使用 swift 时运行/调用 python 脚本?

swift - 为什么闭包捕获引用而函数不捕获引用?另外,为什么闭包声明需要 "lazy"关键字?