动态类型检查混乱Swift

时间:2015-11-15 20:47:10

标签: ios swift

我有一个带参数的函数vcType:UIViewController.Type我正在尝试进行检查

for (int i = 1; i < 10; i++)
{
    field[i] = i+48;
}

但我错了“vcType不是一个类型”。我不确定问题是什么,或者是否有更好的方法来做到这一点。

2 个答案:

答案 0 :(得分:3)

尝试更换:

getTopmostViewController() is vcType

使用:

getTopmostViewController().dynamicType == vcType

编辑: 这只会检查确切的类型。如果getTopmostViewController()返回的控制器是vcType的后代,则会返回false

答案 1 :(得分:2)

也许你想要这样的东西:

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的实例。