2015-10-26 18 views
10

Ho due protocolli (Archivable e Serializable) e una classe (Model) sottoclasse più volte. Molte delle sottoclassi implementano Archivable o Serializable (o entrambi). Mi piacerebbe definire una funzione su tutti i bambini di che implementano sia Archivable e Serializable. Entrambi questi lavori:Estensione del protocollo in Swift Where Object Is a Class ed è conforme a un protocollo

extension Serializable where Self: Model { 
    func fetch() { ... } 
} 

o

extension Serializable where Self: Archivable { 
    func fetch() { ... } 
} 

Tuttavia non si può capire come estendere dove sono richiesti entrambi i protocolli. Ci sono altre opzioni al di fuori della creazione di un terzo protocollo conforme ai primi due?

risposta

23

penso che questo dovrebbe funzionare:

extension Archivable where Self: Model, Self: Serializable { 

    func fetch() { ... } 

} 

... o viceversa:

extension Serializable where Self: Model, Self: Archivable { 

    func fetch() { ... } 

} 
+0

Grazie - questo è esattamente quello che mi serviva. Contrassegnerà come risposta una volta che il sistema me lo consentirà. –

+0

è un ottimo consiglio! – Fattie

Problemi correlati