如何将协议继承转换为指定的类?

时间:2019-07-18 11:40:25

标签: ios swift

我有

protocol BirdProtocol {
  var kukku
}


class Bird : BirdProtocol {
  var canFly
}

我的视图控制器抓住了这个

var mypet : BirdProtocol 

问题:

我可以打电话给mypet.kukku 我无法致电mypet.canFly

我尝试将Mypet投射为?鸟

但似乎无法正常工作,无论如何将协议转换为类?谢谢

3 个答案:

答案 0 :(得分:0)

如前所述,您应该考虑是否需要协议或是否需要向其中添加canFly。尽管基本的铸造作品仍然可以

if let bird = mypet as? Bird {
    print(bird.canFly)
}

答案 1 :(得分:0)

if let newMypet =  as? Bird{
    print("kukku: ", newMypet.kukku, " CanFly : ", newMypet.canFly)
}

答案 2 :(得分:-1)

您不能将协议强制转换为类类型,因为该类不是protocol的成员。另一方面,您可以强制继承继承协议的类,因为您的类具有该协议一致性。