2016-07-12 11 views
1

SRWebSocketのデリゲートを監視可能に移行しようとしています。これは私のRxSocketManagerDelegateProxy.swiftです:DelegateProxyType(rxSwift)でproxyForObject関数を使用できません

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) 
} 

// ... 

} 

問題はproxyForObject関数です。上記のようにコンパイルされていません。 "静的メンバー 'proxyForObject'は 'DelegateProxyType.Protocol'タイプのインスタンスでは使用できません。"

私は(それは推奨されませんが)このようproxyForObjectFunctionを使用しよう:

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

私がメッセージ「アサーションを取得に失敗しました:ファイル/ユーザ/ Agentum /ドキュメント/ Xcodeの/テレメトリ/ポッド/ RxCocoa/RxCocoa/Common/DelegateProxyType.swift "と入力します。

デリゲートを正しく移行するためにproxyForObject()関数を使用する必要がありますか?

答えて

4

proxyForObjectRxSocketManagerDelegateProxyとしてください(DelegateProxyTypeではありません)。

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

非常にありがとう! – Marina

関連する問題