2016-01-02 30 views
15

Quando utilizzo una vista tabella prototipo, devo sempre conformarmi al protocollo TableViewDataSource. Ho sempre dimenticato quali metodi devo implementare, quindi devo controllare ogni volta la fonte del protocollo. Questo richiede molto tempo.Come rendere Xcode automaticamente conforme a un protocollo

Penso che Xcode deve avere una funzionalità che implementa automaticamente i metodi necessari per te, giusto? Proprio come IntelliJ IDEA, Eclipse e Visual Studio.

Voglio sapere dove posso trovare questa funzione. Se non c'è, c'è una soluzione per questo? Almeno non devo aprire il codice sorgente del protocollo ogni volta che mi conformo ad esso.

Se non si capisce cosa voglio dire, ecco qualche codice:

Ho un protocollo

protocol Hello { 
    func doStuff() 
} 

Quando mi sono conformi a essa,

class MyClass: Hello { 

} 

spesso don' Ricordo i nomi dei metodi che devo implementare. Se Xcode ha una funzione che trasforma il codice precedente, in questo:

class MyClass: Hello { 
    func doStuff() { 
     code 
    } 
} 

Ora capisci cosa intendo? Voglio solo chiedere dove trovare una funzione del genere.

+2

Vedere la stessa domanda http://stackoverflow.com/ques/27331588/autoimplement-swift-protocol-methods-in-xcode –

+0

La risposta collegata è l'unico approccio.Dopo aver creato un paio di controller tableview i metodi saranno nella tua memoria :) – Paulw11

+0

Per quanto ho capito questa domanda, non è la stessa del link sopra da @AlessandroChiarotto. Questa domanda qui riguarda l'implementazione delle funzioni necessarie quando sono conforme a un protocollo. Spero che qualcuno conosca presto una risposta. – AlexWoe89

risposta

9

Beh, se ho capito il problema allora ecco una soluzione:

cercare di definire i metodi con protocollo come prefisso come qui hello allora non dovrete ricordare i metodi basta iniziare a digitare il nome del protocollo e XCODE verrà chiesto con tutti i metodi disponibili vedete qui:

enter image description here

E se si vuole il protocollo di completamento automatico tenta Snippets

+0

Grazie mille! Questo è molto utile! – Sweeper

+5

Le cattive pratiche di denominazione non sono una soluzione valida per ciò che è un difetto dell'IDE. – Raphael

+0

È conforme alle pratiche di denominazione di iOS, come si può vedere nella denominazione delle funzioni dell'applicazione AppDelegate o nella denominazione DataSource di tableView. È inoltre possibile fare riferimento a raywanderlich [linee guida rapide] (https://github.com/raywenderlich/swift-style-guide#delegates) –

4

Xcode 9, si prende cura di applicazione di metodi obbligatori di Swift origine dati & 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

+0

Ciò richiede l'attivazione di un'impostazione specifica? Non riesco ancora a ottenere l'opzione per generare automaticamente i metodi con Xcode 9.2 – slackwars

+0

@slackwars - Puoi condividere, quale (quale protocollo) hai provato. Questo avviso/errore sarà visibile, se esiste una funzione obbligatoria da implementare obbligatoriamente. Se tutte le funzioni/metodi sono facoltativi (o se sono già stati aggiunti/implementati nel codice), questo avviso non verrà indicato/mostrato. – Krunal

+0

classe ViewController: UIViewController, UICollectionViewDelegate, UICollectionViewDataSource { – slackwars