Ios 使用另一协议扩展协议中定义的委托

Ios 使用另一协议扩展协议中定义的委托,ios,swift3,Ios,Swift3,我想用另一个协议扩展协议委托,如下所示: protocol WriteableCallback: class { ... } protocol Writeable { weak var delegate: WriteableCallback? { get set } } protocol NetworkWriteablecallback: WriteableCallback { ... } protocol NetworkWriteable: Writeable { ..

我想用另一个协议扩展协议委托,如下所示:

protocol WriteableCallback: class {
  ...
}

protocol Writeable {
  weak var delegate: WriteableCallback? { get set }
}

protocol NetworkWriteablecallback: WriteableCallback {
  ...
}

protocol NetworkWriteable: Writeable {
  ..
}
现在,实现NetworkWriteable相当简单:

final class DefaultNetworkWriteable: NetworkWriteable {
   weak var delegate: NetworkWriteablecallback? 
   //type 'DefaultNetworkWriteable' does not conform to protocol 'Writeable
   //because delegate should be of type 'Writeablecallback'
}
如果我写

weak var delegate: Writeablecallback? 
除了我不能直接调用NetworkWriteablecallback的方法外,所有的东西都可以编译并正常工作。我知道,如果我像下面这样贬低代表

if let delegate = delegate as? NetworkWriteablecallback {
 ...
}
比它的作品好,但铸造不是一个好办法

还有其他建议吗?

不幸的是,
代表
要求声明,如果可以的话,我不知道这是件好事

我将提供一个方便,以透明的方式选出代表。通过协议扩展,这种转换成为
NetworkWriteable
协议的固有行为

extension NetworkWriteable {
    var networkWriteableDelegate: NetworkWriteablecallback? {
        set {
            delegate = newValue
        }
        get {
            return delegate as? NetworkWriteablecallback
        }
    }
}

final class DefaultNetworkWriteable: NetworkWriteable {

    weak var delegate: WriteableCallback?

    func myfunc() {
        if self.networkWriteableDelegate === self.delegate {
            // always true
        }
    }
}