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

zhte4eai  于 2022-11-06  发布在  Swift
关注(0)|答案(3)|浏览(278)

当我声明一个类,我想遵守一个协议,Swift会显示一条消息,告诉我在满足所有协议的要求之前,我不遵守那个协议。
有没有办法让编译器提供更具体的细节,告诉我缺少哪些需求,或者为什么我不符合该协议,或者我总是必须打开该协议的源代码,与我的类的源代码并排,并进行手动的目测比较?
澄清一下,我并不是特别询问任何特定的协议,事实上,我确实在寻找更好的支持来执行我自己的协议。

fykwrbwg

fykwrbwg1#

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

nr9pn0ug

nr9pn0ug2#

有没有办法让编译器给予我更具体的细节,我错过了哪些需求?
是的,完整的编译器输出会准确地告诉您缺少哪些要求:

  • 转到“报告导航器”,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
mo49yndu

mo49yndu3#

Xcode 9,帮助实现Swift数据源和委托的所有强制方法。
以下是UITableViewDataSource的示例:
显示警告/提示以实现强制方法:

单击“修复”按钮,将在代码中添加所有强制方法:

相关问题