Ios &引用;是";Swift中的关键字
据我所知,大家似乎一致认为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") }
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 { ... }