2015-12-15 17 views
6

Diciamo che abbiamo un protocollo Swift:Lettura var statica dal protocollo di estensione metodo di istanza

protocol SomeProtocol: class { 
    static var someString: String { get } 
} 

C'è un modo per accedere someString da un metodo di istanza di estensione, in questo modo?

extension SomeProtocol { 
    public func doSomething() -> String { 
     return "I'm a \(someString)" 
    } 
} 

ottengo un errore di compilazione:

Static member 'someString' cannot be used on instance of type 'Self'

Esiste un modo per ottenere questo risultato?

risposta

6

è necessario fare riferimento a someString con Self (nota la maiuscola S):

extension SomeProtocol { 
    public func doSomething() -> String { 
     return "I'm a \(Self.someString)" 
    } 
}