我如何知道如何符合Swift中的特定协议?

时间:2015-12-01 08:10:15

标签: swift swift2 protocols

当我声明一个我想要符合协议的类时,Swift会向我显示一条消息,说明在符合所有协议要求之前我不符合该协议。

有没有办法让编译器给我更具体的细节,说明我缺少哪些要求,或者为什么我不符合该协议,或者我总是要用我的班级打开该协议的源代码源代码并排并进行手动眼球比较?

为了澄清,我并没有特别询问任何具体的协议,事实上我真的在寻求更好的支持来执行我自己的协议。

3 个答案:

答案 0 :(得分:6)

Issue Navigator(左侧面板上的感叹号图标,或CMD+4)将显示哪些协议不符合以及原因:

enter image description here

答案 1 :(得分:2)

  

有没有办法让编译器给我更具体的细节,说明我缺少哪些要求?

是的,完整的编译器输出可以准确地告诉您缺少哪些要求:

  • 转到“报告导航器”, cmd 8
  • 选择最后一次构建。
  • 对于每个编译的文件,右侧都会打开一个图标 编译器的全文输出。

简单示例:

class A : Equatable {
}

编译器输出:

error: type 'A' does not conform to protocol 'Equatable'
class A : Equatable {
      ^
Swift.Equatable:28:17: note: protocol requires function '==' with type '(A, A) -> Bool'
    public func ==(lhs: Self, rhs: Self) -> Bool

答案 2 :(得分:0)

Xcode 9,有助于实现Swift数据源的所有强制方法。代表。

以下是UITableViewDataSource的示例:

显示警告/提示以实施强制方法:

enter image description here

单击“修复”按钮,它将在代码中添加所有必需的方法:

enter image description here