Swift - 属性类型和协议

问题描述:

在我的一个Objective-C类中,我有一个UIViewController<UIProfileListHeaderDelegate>类型的属性,我将如何在Swift中表示该属性?我需要访问UIViewControllerUIProfileListHeaderDelegate的属性和方法。Swift - 属性类型和协议

谢谢!

+0

其实我试过,但我可能没有做正确的搜索。我想过使用泛型,但似乎并非如此。我也尝试创建一个typealias,但我找不到它的正确语法。 – 2014-09-02 12:53:52

+1

看起来像http://*.com/questions/25172430/how-to-declare-a-property-of-a-particular-class-which-is-also-protocol-conforman的重复,虽然没有好的答案那里。其实问题似乎不容易通过谷歌搜索 – 2014-09-02 13:05:07

+0

@codingVoldemort你有什么想法吗? – 2014-09-02 13:36:34

处理此问题的快速方法是定义一个协议,其中包含从UIViewController开始的相关方法,并让您的UIProfileListHeaderDelegate继承该协议。

定义与自己关心的方法的协议:

protocol ViewControllerSubset { 
    var view:UIView! 
} 

声明一个UIViewController中实现了协议,并不需要实际执行任何东西,因为它已经存在

extension UIViewController : ViewControllerSubset {} 

继承你的协议从那

protocol UIProfileListHeaderDelegate : ViewControllerSubset 

而你走了。

如果你不想改变你的协议的层次结构(或不能因为它是一个系统协议),您可以定义包含两个协议的协议)

protocol EquatableAndComparable : Equatable, Comparable { }