PROTOCOLLI¶
Cosa imparerò:
- CustomStringConvertible
- Equatable
- Comparable
Un protocollo definisce le proprietà o i metodi che un oggetto deve avere per completare un compito.
Un protocollo può essere adottato da un altro tipo, e ogni tipo deve essere conforme al protocollo che si vuole utilizzare.
Ci sono diversi protocolli, gli hai già utilizzati per le UITableView (protocolli delegate e dataSource). Alcuni protocolli che ti saranno utili sono:
CustomStringConvertible: permette di controllare come un oggetto viene stampato in console:
class Person: CustomStringConvertible {
var name: String
var surname: String
init(name: String, surname: String) {
self.name = name
self.surname = surname
}
var description: String {
return "Utente: \(name) \(surname) si è registrato"
}
}
Ora la classe Person conforma al protocollo CustomStringConvertible e ha una proprietà description che restituisce una descrizione formattata dell'istanza Person.
Equatable: permette di confrontare delle istanze di un tipo conforme a questo protocollo e controllare se sono uguali.
struct Impiegato: Equatable {
var nome: String
var titolo: String
var cellulare: String
static func ==(lhs: Impiegato, rhs: Impiegato) -> Bool {
return lhs.nome == rhs.nome && lhs.titolo == rhs.titolo && lhs.cellulare == rhs.cellulare
}
}
Comparable: permette di comparare delle istanze di un tipo conforme a questo protocollo e ordinarle nel modo più opportuno.
struct Impiegato: Comparable {
var nome: String
var titolo: String
var cellulare: String
static func < (lhs: Impiegato, rhs: Impiegato) -> Bool {
return lhs.nome < rhs.nome
}
}
Ritornerà true se il nome del valore a sinistra viene prima del valore a destra alfabeticamente.