Punti chiave qui:
- Il protocollo e la classe che lo implementa, mai avere la parola chiave
func
davanti al metodo di init
.
- Nella classe, poiché il metodo
init
è stato richiamato nel protocollo, ora è necessario prefisso il metodo init
con la parola chiave required
. Questo indica che un protocollo conforme ti ha richiesto di avere questo metodo init
(anche se potresti aver pensato indipendentemente che fosse una buona idea).
Come coperto da altri, il protocollo sarebbe simile a questa:
protocol Serialization {
init(key keyValue: String, jsonValue: String)
}
E come esempio, una classe che è conforme a questo protocollo potrebbe apparire in questo modo:
class Person: Serialization {
required init(key keyValue: String, jsonValue: String) {
// your logic here
}
}
Avviso il ha richiesto la parola chiave di fronte al metodo init
.
Perché lo vuoi in un protocollo? Perché è importante come viene creato il tipo? – Mark
Un oggetto può avere più funzioni di init. Perché non avere uno prescritto da un protocollo come quello che potrebbe essere chiamato? –
Ecco perché la parola chiave 'func' prima di' init'. Rimuovilo e riprova. –