Swift泛型,不能推断出T型

时间:2017-06-23 17:02:34

标签: swift generics

我尝试了很多不同的东西,但我不擅长仿制药。 如何调用具有变量的函数,该变量既需要像UIViewController这样的实体类型,又要符合NavBarResponder之类的协议? 谢谢!

weak var lastNavBarResponder: UIViewController?

func reloadExtendedNavBar() {
    self.updateState()
    self.updateStatusBadges()
    if let vc = self.lastNavBarResponder {
        self.setup(viewController: vc) // Error: Generic parameter T cannot be inferred
    }
}

func setup<T: UIViewController>(viewController: T) where T: NavBarResponder {
...

1 个答案:

答案 0 :(得分:0)

我怀疑错误是因为UIViewController自然不符合NavBarResponder,因此编译器无法保证lastNavBarResponder符合{{1}的要求}}

尝试将setup更改为符合lastNavBarResponder协议的UIViewController类型。

这是一个独立的示例,展示了如何实现这一点。

NavBarResponder