2016-07-12 3 views
1

Ich versuche Delegat von SRWebSocket zu Observable zu migrieren. Das ist mein RxSocketManagerDelegateProxy.swift:Kann die Funktion proxyForObject nicht in DelegateProxyType (rxSwift) verwenden

class RxSocketManagerDelegateProxy: DelegateProxy, DelegateProxyType{ 

static func currentDelegateFor(object: AnyObject) -> AnyObject?{ 
    let socket: SRWebSocket = object as! SRWebSocket 
    return socket.delegate 
} 

static func setCurrentDelegate(delegate: AnyObject?, toObject object: AnyObject) { 
    let socket: SRWebSocket = object as! SRWebSocket 
    socket.delegate = delegate as? SRWebSocketDelegate 
} 

} 

extension SRWebSocket{ 
    public var rx_delegate: DelegateProxy{ 
    return DelegateProxyType.proxyForObject(self) 
} 

// ... 

} 

Das Problem ist in proxyForObject Funktion. Es ist nicht wie oben kompiliert. Ich erhalte eine Warnung "Statischer Member 'proxyForObject' kann nicht für Instanzen vom Typ 'DelegateProxyType.Protocol' verwendet werden."

Wenn ich versuche, proxyForObjectFunction wie diese zu verwenden (obwohl es veraltet ist):

public var rx_delegate: DelegateProxy{ 
    return proxyForObject(RxSocketManagerDelegateProxy.self, self) 
} 

ich Meldung „Assertionsfehler: Datei/Users/Agentum/Dokumente/Xcode/Telemetrie/Hülsen/RxCocoa/RxCocoa/Common/DelegateProxyType.swift ".

Wie sollte ich die Funktion proxyForObject() verwenden, um den Delegaten korrekt zu migrieren?

Antwort

4

Sie sollten proxyForObject auf RxSocketManagerDelegateProxy anrufen, nicht DelegateProxyType.

extension SRWebSocket { 
    public var rx_delegate: DelegateProxy { 
     return RxSocketManagerDelegateProxy.proxyForObject(self) 
     // instead of: `return DelegateProxyType.proxyForObject(self)` 
    } 
} 
+0

Vielen Dank! – Marina

Verwandte Themen