快速协议中的继承

时间:2017-02-06 11:42:50

标签: swift swift-protocols

如何在swift(2.0)中解决这种情况:我们有两个协议:

protocol SuperDelegate{
     func handleSuccess(rsp: BaseRsp)
}

protocol ChildOfSuperDelegate: SuperDelegate {
    func handleSuccess(rsp: ChildOfBaseRsp)
}

以及代码中我们想要的地方:

class A{
    var delegate:SuperDelegate?

    func foo(){
        delegate?.handleSuccess(childOfBaseRspObj)
    }
}

class Xyz:ChildOfSuperDelegate{
     func handleSuccess(rsp: ChildOfBaseRsp){
        print("Great!")
     } 
}

但编译器没有在协议中创建继承(handleSuccess具有带base和child参数的函数)存在编译错误:

Type 'Xyz' does not conform to protocol 'SuperDelegate'

。怎么解决?仅实现ChildOfSuperDelegate方法的最佳方法是什么,但类“A”使用SuperDelegate变量。

Meybe我必须使用泛型类型在协议中具有类似继承的想法。

1 个答案:

答案 0 :(得分:0)

这里你的协议ChildOfSuperDelegate继承自SuperDelegate,虽然它是一个协议但它没有实现它的方法。但是当你继承ChildOfSuperDelegate时,你必须实现SuperDelegate的方法以及ChildOfSuperDelegate。

所以这样做:

class Xyz:ChildOfSuperDelegate{
  func handleSuccess(rsp: BaseRsp) {
    //do stuff 
  }

func handleSuccess(rsp: ChildOfBaseRsp){
     print("Great!")
  }
}