在XCode中自动实现Swift协议方法

在XCode中自动实现Swift协议方法

问题描述:

我刚开始使用swift语言,并从java中获得它迄今为止看起来很棒。 但我真的错过了一些东西:在XCode中自动实现Swift协议方法

Eclipse有这个很棒的功能,当我添加“implements XYZ”时,它提供了一个自动实现必要功能存根的功能。这是一个巨大的节省时间。

XCode似乎没有这个功能,或者我错过了什么?

我发现使用配件插件,但这似乎只能用Objective C的工作..

有没有解决方案?

PS。我正在使用XCode 6.1.1

+2

试试AppCode IDE。它有很多有用的铃声和哨声,这些在Xcode中是缺少的。它具有您提到的Eclipse功能。 – 2014-12-06 21:19:05

+0

仍然缺少的东西(Xcode 8现在)是自动完成协议实现的'Eclipse'选项,无需猜测每个需求的措辞。 Surly,在已知的方面,这不是一个问题,但除此之外,人们必须不断回到协议并找出编译器仍在抱怨哪一个。建议向Apple发送Xcode功能请求。 – bauerMusic 2017-01-11 07:46:09

+0

基本上我必须为每个协议创建一个文件并将功能存根出来。 XCode 9更改无法像您期望的那样工作。这就像XCode开发者拼命地试图通过惩罚必须使用他们软件的人来区分它们一样。无论是,还是Jetbrains用AppCode支付他们的钱,不提供惊人的复杂操作,如:重复行,当然删除行 – 2017-06-15 17:11:57

Xcode 9

Xcode 9现在支持通过“修复它”符合协议方法。它会自动填补你缺少的方法。这是在2017年WWDC

宣布

enter image description here

更新:这似乎并不为你所定义的协议工作,很遗憾。

+3

终于!这是姗姗来迟! – user3207838 2017-06-06 17:10:18

+3

确实。欢呼! – 2017-06-08 10:01:33

+0

不幸的是不是所有的协议都可用,'Collection'就是其中之一,bug可能是? – valcanaia 2017-11-24 03:19:55

注意:这个答案对于版本9之前的Xcode是正确的;在版本9中,Apple增加了自动修复缺失协议方法的功能;见Guy Daher's answer

我刚刚创建了一个iOS项目,然后进入我的UIViewController.swift文件。在那里,我宣布,它实现的UITableViewDelegate:

class ViewController: UIViewController, UITableViewDelegate { 

现在,当我进入类的主体,并开始输入“选项卡上......”,我看到相应的自动填充功能:

Xcode autocompletions

打到输入然后插入函数存根,光标已经准备好进行编码。

这就是Xcode自动完成协议(或继承类方法)的方式。如果你想一次完成所有这些,我不认为这是可能的,遗憾的是。但你总是可以Cmd的 -click或选项 - Cmd的单击鼠标右键的协议名称(使用辅助编辑器窗口)跳转到它的定义,这基本上是所有的方法,你可以复制和列表粘贴到您的代码中。你需要从那里收拾一点,但不多。

+0

你知道任何方式来扩展自动完成视图,以便你可以看到整个方法签名? – chrisortman 2016-01-29 16:28:50

+0

或者你知道如何继续打字吗?没有自动完成的tableView无法工作?我还没有找到方法来处理键入tableView:willSelect ...跳转到正确方法的列表末尾。你总是有所有tableView相关的方法的完整列表,并且必须滚动到结尾... – marsbear 2016-03-10 17:11:49

+0

此解决方案在XCode 7.3或7.0中不适用于我的工作 – andrewz 2016-03-24 15:35:17

Xcode 9,负责实施Swift Datasource的强制方法&代表。

看看这些快照,用举例的UICollectionViewDataSource

指示警告落实协议方法:

enter image description here

通过点击“修复”按钮,还增加了所有强制性方法:

enter image description here