我有一个函数,它接受一个参数vcType:UIViewController.Type,我正在尝试检查

if getTopmostViewController() is vcType {
  // do stuff
}

但我错了“vcType不是类型”。我不知道问题是什么,也不知道是否有更好的方法来解决这个问题。

最佳答案

也许你想要这样的东西:

if getTopmostViewController().isKindOfClass(vcType.dynamicType) {
    // do stuff
}

上面,vcType是某个类的实例,它正在检查getTopmostViewController()是否返回同一个类(或子类)的实例。
或者你真的想写一个这样的函数:
func doStuffIfTopMostViewControllerHasType<VCType: UIViewController>(_: VCType.Type) {
    if getTopmostViewController() is VCType {
        // do stuff
    }
}

你这样称呼它:
doStuffIfTopMostViewControllerHasType(MyViewController.self)

注意,我传递的是MyViewController类本身,而不是MyViewController的实例。

关于ios - 动态类型检查困惑Swift,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33724849/

10-11 07:54