2014-12-06 10 views
33

Ho appena iniziato con il linguaggio rapido e, provenendo da java, sembra fantastico finora. Ma sono davvero manca qualcosa:Attuazione automatica Metodi di protocollo Swift in XCode

Eclipse ha avuto questa grande caratteristica che quando ho aggiunto "implementa XYZ" che mi ha fornito una funzione per implementare automaticamente i mozziconi delle funzioni necessarie. Questo è un enorme risparmio di tempo.

XCode non sembra avere questa funzione o mi manca qualcosa?

ho trovato il plugin Accessorize, ma questo sembra funzionare solo con Objective C ..

C'è una soluzione?

PS. Utilizzo XCode 6.1.1

+2

Provare l'IDE AppCode. Ha un sacco di campane e fischi utili che mancano da Xcode. Ha la funzione Eclipse che hai citato. –

+0

Ciò che ancora manca (Xcode 8 ora) è l'opzione 'Eclipse' per completare automaticamente l'implementazione del protocollo senza dover indovinare la formulazione di ciascun requisito. Sicuramente, su quelli conosciuti, è meno di un problema, ma per il resto, si deve tornare indietro al protocollo e capire quale è il compilatore che continua a lamentarsi. Suggerire di inviare una richiesta di funzionalità Xcode ad Apple. – bauerMusic

+0

Fondamentalmente devo creare un file per ogni protocollo e bloccare le funzioni .. strada da fare ragazzi. La modifica di XCode 9 non funziona come ci si aspetterebbe. È come se gli sviluppatori di XCode cercassero disperatamente di differenziare penalizzando la persona che deve usare il loro software. O quello, o Jetbrains li sta pagando con denaro AppCode per non offrire AMPIAMENTE COMPLESSE operazioni come: Linea duplicata, e, ovviamente Elimina Riga –

risposta

14

Xcode 9

Xcode 9 ora supporta conforme ai metodi di protocollo tramite un "risolvere il problema". Riempirà automaticamente i metodi mancanti per te. Lo ha annunciato nel WWDC 2017.

enter image description here

Aggiornamento: Questo non sembra funzionare per protocolli definiti da voi, purtroppo.

+3

Finalmente! Era da tempo in ritardo! – user3207838

+3

Infatti. Evviva! –

+0

Sfortunatamente non disponibile per tutti i protocolli, 'Collection' è uno di questi, forse un bug? – valcanaia

22

NB: questa risposta è vera per Xcode precedente alla versione 9; nella versione 9 Apple ha aggiunto la possibilità di correggere automaticamente i metodi di protocollo mancanti; vedi Guy Daher's answer.

Ho appena creato un progetto iOS e sono entrato nel mio file UIViewController.swift. Ci ho dichiarato che implementata UITableViewDelegate:

class ViewController: UIViewController, UITableViewDelegate { 

Ora quando vado nel corpo della classe, e iniziare a digitare "scheda ...", vedo i completamenti automatici adeguati:

Xcode autocompletions

Colpire Inserire quindi inserire la funzione stub, con il cursore posizionato pronto per il codice.

Questo è solo il modo in cui Xcode esegue il completamento automatico dei protocolli (o dei metodi ereditati di classe). Se si desidera eseguirli tutti contemporaneamente, non penso sia possibile, purtroppo. Ma si può sempre Cmd -click o Opzione - Cmd -click (che utilizza una finestra di editor secondario) sul nome del protocollo per passare alla sua definizione, che è fondamentalmente un elenco di tutti i suoi metodi è possibile copiare e incolla nel tuo codice. Dovresti riordinare un po 'da lì, ma non molto.

+0

Conosci qualche modo per espandere quella visualizzazione automatica in modo da poter vedere l'intera firma del metodo? – chrisortman

+0

O sai come continuare a digitare oltre ad es. tableView senza il completamento automatico non funziona? Non ho trovato un modo per es. digitare tableView: willSelect ... per passare alla fine dell'elenco con il metodo corretto. Hai sempre l'elenco completo di tutti i metodi rilevanti di TableView e devi scorrere fino alla fine ... – marsbear

+0

Questa soluzione non funziona per me in XCode 7.3 o 7.0 – andrewz

1

Xcode 9, si occupa dell'implementazione dei metodi obbligatori di Swift Datasource & Delegati.

Guardate queste istantanee, con l'esempio di UICollectionViewDataSource:

Indicando avvertimento per implementare metodi di protocollo:

enter image description here

Cliccando sul pulsante 'Fix', ha aggiunto tutti i metodi obbligatori:

enter image description here

Problemi correlati