Ios &引用;是";Swift中的关键字

Ios &引用;是";Swift中的关键字,ios,swift,Ios,Swift,据我所知,大家似乎一致认为Swift关键字中的is与iskindof class方法同义 但是,我很难让以下各项正常工作: //inside of a method in UITabViewController //check if the currently selected tab is ActivityViewController if selectedViewController is ActivityViewController { print("isActivity") }

据我所知,大家似乎一致认为Swift关键字中的
is
iskindof class
方法同义

但是,我很难让以下各项正常工作:

//inside of a method in UITabViewController

//check if the currently selected tab is ActivityViewController
if selectedViewController is ActivityViewController {
    print("isActivity")
} else {
    print("isNotActivity")
}


//same check
if selectedViewController?.isKindOfClass(ActivityViewController) != nil {
    print("isActivity")
} else {
    print("isNotActivity)
}

调用此代码块时,我确保自己处于
ActivityViewController
选项卡中<代码>isKindOfClass正确,
selectedViewController为ActivityViewController
不正确。关于这是为什么的任何想法?

是类的种类
不是同义词,请参见示例

然而,在您的案例中,问题是可选的链接

返回一个
可选值
,如果调用无法执行,则该值为
nil
生成(因为
selectedViewController
nil
),而非
nil
否则的话,我会很珍惜的。所以

selectedViewController?.isKindOfClass(ActivityViewController) != nil
如果可以拨打,则为真,与 返回值为
true
false


你会得到预期的结果。

你的答案在逻辑上是合理的,但由于某些原因,我没有得到正确的结果<代码>如果选择了ViewController?.isKindOfClass(ActivityViewController)!=true{…}将始终为true,无论我在哪个选项卡中。进一步测试…@KelvinLau:注意,我建议测试
==true
。测试
!=如果selectedViewController为nil或isKindOfClass返回false,则true
将保持不变。仍然没有得到不同的结果:(因此,如果selectedViewController为ActivityViewController,则测试
成功,但如果selectedViewController?。isKindOfClass(ActivityViewController)==true
未成功?抱歉,Martin,问题是因为我在ActivityVC面前有一个UINavi
selectedViewController?.isKindOfClass(ActivityViewController) != nil
if selectedViewController?.isKindOfClass(ActivityViewController) == true { ... }