Ios 如何将控制器强制转换为特定协议,而不是Swift中的类?

Ios 如何将控制器强制转换为特定协议,而不是Swift中的类?,ios,swift,protocols,segue,Ios,Swift,Protocols,Segue,这是我的协议: protocol DBViewAnimationTransitioning { var viewForAnimation: UIView? { get set } } prepareforsgue:中的用法示例: override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { if let controller = segue.destinationViewControl

这是我的
协议

protocol DBViewAnimationTransitioning {
    var viewForAnimation: UIView? { get set }
}
prepareforsgue:
中的用法示例:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if let controller = segue.destinationViewController as? DBViewAnimationTransitioning {
        controller.viewForAnimation = sender as? UIView //cannot assign to to viewForAnimation in controller
    }
}
当我向特定的控制器f.e.
DBFindViewController
转换时,一切都很好。但我需要将其转换为特定的
协议
而不是
。如何做到这一点

您只能使用
@objc协议检查协议一致性(包括
is
as
as?

因此,解决方案很简单:

@objc protocol DBViewAnimationTransitioning {
    var viewForAnimation: UIView? { get set }
}
或:


因为协议不是专门针对类/结构的,所以它无法分配某些内容,因为它可能是一个结构,因为它是复制的,所以没有意义。尝试将其声明为类协议,如
protocol dbviewmanimationtransitioning:class

protocol DBViewAnimationTransitioning: class {
    var viewForAnimation: UIView? { get set }
}