2014-12-06 72 views
33

我剛開始使用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

回答

14

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

22

注意:這個答案對於版本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

1

Xcode 9,負責實施Swift Datasource的強制方法&代表。

看看這些快照,用舉例的UICollectionViewDataSource

指示警告落實協議方法:

enter image description here

通過點擊「修復」按鈕,還增加了所有強制性方法:

enter image description here