2014-07-23 4 views
13

Non riesco a creare un'estensione in Swift conforme a un protocollo.Estensione rapida conforme al protocollo

in Objective-C ho potuto creare una categoria che conformato a un protocollo:

SomeProtocol.h

@protocol SomeProtocol 
... 
@end 

UIView + NomeCategoria

#import SomeProtocol.h 
@interface UIView (CategoryName) <SomeProtocol> 
... 
@end 

sto cercando per ottenere lo stesso risultato con una Swift Extension

SomeProtocol.swift

protocol SomeProtocol { 
    ... 
} 

UIView estensione

import UIKit 
extension UIView : SomeProtocol { 
... 
} 

ricevo il seguente errore di compilatore:

Type 'UIView' does not conform to protocol 'SomeProtocol'

+1

avete implementato i metodi nel protocollo? –

risposta

17

favore ricontrolla nell'estensione che hai implementato tutti i metodi def inserito nel protocollo. Se la funzione a non è implementata, allora si otterrà l'errore del compilatore che hai elencato.

protocol SomeProtocol { 
    func a() 
} 

extension UIView : SomeProtocol { 
    func a() { 
     // some code 
    } 
} 
9
//**Create a Protocol:** 

protocol ExampleProtocol { 
    var simpleDescription: String { get } 
    func adjust()-> String 
} 


//**Create a simple Class:** 

class SimpleClass { 

} 

//**Create an extension:** 

extension SimpleClass: ExampleProtocol { 

    var simpleDescription: String { 

    return "The number \(self)" 
    } 

    func adjust()-> String { 

    return "Extension that conforms to a protocol" 

    } 


} 

var obj = SimpleClass() //Create an instance of a class 

println(obj.adjust()) //Access and print the method of extension using class instance(obj) 

Risultato: Estensione che è conforme a un protocollo

Speranza che aiuta ..!

+0

Puoi spiegare come confermare se var simpleDescription: String {get set} property. –

+0

@RajeshKumar 'var simpleDescription: String { get {return" Il numero \ (self) "} set (desc) {self.simpleDescription = desc} }' –