2014-12-06 15 views
33

Po prostu zacząłem od szybkiego języka i pochodzącego z java, który wygląda świetnie. Ale naprawdę czegoś brakuje:Autoimplement Metody protokołu Swift w XCode

Eclipse miał tę wspaniałą cechę, że kiedy dodałem "narzędzia XYZ", dostarczyłem mi funkcję automatycznego zaimplementowania niezbędnych skrótów funkcji. To jest ogromny wygód.

Kod XCode wydaje się nie mieć tej funkcji lub czegoś brakuje?

znalazłem wtyczkę Accessorize, ale to wydaje się tylko do pracy z Objective C ..

Czy istnieje rozwiązanie?

PS. Używam XCode 6.1.1

+2

Wypróbuj identyfikator AppCode IDE. Ma wiele przydatnych dzwonków i gwizdków, których brakuje w Xcode. Posiada wspomnianą funkcję Eclipse. –

+0

To, czego wciąż brakuje (Xcode 8 teraz) to opcja "Eclipse" do automatycznego uzupełniania implementacji protokołu bez konieczności odgadywania sformułowania każdego wymagania. Głupie, na znane, to mniejszy problem, ale poza tym trzeba wracać do protokołu i dowiedzieć się, na którym kompilatorze wciąż narzeka. Zaproponuj wysłanie prośby o funkcję Xcode do Apple. – bauerMusic

+0

Zasadniczo muszę utworzyć plik dla każdego protokołu i odgadnąć funkcje .. sposób na facetów. Zmiana XCode 9 nie działa tak, jak byś się spodziewała. To tak, jak twórcy XCode desperacko próbują odróżnić się od karania osoby, która musi używać swojego oprogramowania. Albo to, albo Jetbrains płaci im pieniędzmi AppCode, aby nie oferować NIESAMOWICIE ZŁOŻONYCH operacji, takich jak: Zduplikowana linia i, oczywiście, Usuń Linię –

Odpowiedz

14

Xcode 9

Xcode 9 obsługuje zgodny z metod protokołu za pośrednictwem "naprawić". Automatycznie wypełni brakujące metody dla ciebie. Zostało to ogłoszone w WWDC 2017

enter image description here

Aktualizacja: to nie wydają się działać dla protokołów zdefiniowanych przez Ciebie, niestety.

+3

Wreszcie! To było dawno spóźnione! – user3207838

+3

Rzeczywiście. Hurra! –

+0

Niestety nie jest dostępny dla wszystkich protokołów, "Collection" jest jednym z nich, może bug? – valcanaia

22

NB: Ta odpowiedź jest prawdziwa dla Xcode przed wersją 9; w wersji 9 Apple dodała możliwość automatycznego naprawiania brakujących metod protokołów; patrz Guy Daher's answer.

Właśnie stworzyłem projekt iOS i udałem się do mojego pliku UIViewController.swift. Tam oświadczył, że wdrożone UITableViewDelegate:

class ViewController: UIViewController, UITableViewDelegate { 

teraz, kiedy idę do ciała klasy, i rozpocząć wpisywanie "kartę ...", widzę odpowiednie autouzupełnień:

Xcode autocompletions

Uderzenie Wprowadź kod, a następnie wstaw kod funkcyjny, po czym kursor jest gotowy do kodowania.

W ten sposób Xcode automatycznie uzupełnia protokoły (lub odziedziczone metody klasowe). Jeśli chcesz zrobić je wszystkie naraz, nie sądzę, że jest to możliwe, niestety. Ale zawsze można Cmd -Kliknij lub Opcja - Cmd -Kliknij (który wykorzystuje okno edytora wtórny) od nazwy protokołu, aby przejść do jego definicji, która jest w zasadzie lista wszystkich metod można kopiować i wklej do kodu. Musisz trochę posprzątać, ale niewiele.

+0

Czy znasz jakiś sposób na rozszerzenie tego widoku autouzupełniania, abyś mógł zobaczyć cały podpis metody? – chrisortman

+0

Czy wiesz, jak dalej pisać na maszynie? tableView bez automatycznego uzupełniania nie działa? Nie znalazłem sposobu na np. wpisz tableView: willSelect ..., aby przejść na koniec listy do właściwej metody. Zawsze masz pełną listę wszystkich metod związanych z tableView i musisz przewinąć do końca ... – marsbear

+0

To rozwiązanie nie działa dla mnie w XCode 7.3 lub 7.0 – andrewz

1

Xcode 9, zajmuje się wdrażaniem obowiązkowych metod Swift Datasource & Delegaci.

Spójrz na tych migawek z przykładu UICollectionViewDataSource:

Wskazanie ostrzeżenia do wdrożenia metody Protokół:

enter image description here

Klikając na przycisk 'Fix', dodała wszystkie obowiązkowe metody:

enter image description here

Powiązane problemy