我有一个包含一个属性的Swift协议:
protocol WireframeProtocol: class
{
var rootViewController: UIViewController { get }
}
我接下来有一个类,按照这个协议进行实现:
class MenuWireframe : WireframeProtocol
{
let rootViewController: UIViewController
init()
{
self.rootViewController = MenuViewController(nibName: "MenuViewController", bundle: nil)
(self.rootViewController as! MenuViewController).presenter = MenuPresenter(interactor: MenuInteractor())
}
}
在我的线框图类中,变量实际上是MenuViewController类型的,但必须声明为UIViewController以符合该协议。 我必须使用(self.rootViewController as! MenuViewController)将其强制转换为正确的类,以便能够访问其属性。 在上面的简单示例中,这样做很好,但在更复杂的情况下不太可读。 是否有更好的方法来声明协议变量?
非常感谢!