据我所知,似乎共识是 Swift 关键字中的 is
是 isKindOfClass
方法的同义词。
但是,我在执行以下操作时遇到了问题:
//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
不是。关于这是为什么的任何想法?
最佳答案
is
和 isKindOfClass
不是同义词,例如参见
Is there a difference between "is" and isKindOfClass()? .
但是,在您的情况下,问题是可选链接。
selectedViewController?.isKindOfClass(ActivityViewController)
返回 Optional<Bool>
这是nil
如果调用不是
制作(因为 selectedViewController
是 nil
),以及非 nil
否则值(value)。所以
selectedViewController?.isKindOfClass(ActivityViewController) != nil
为真如果可以进行调用,与是否
返回值为 true
或 false
.
与
if selectedViewController?.isKindOfClass(ActivityViewController) == true { ... }
你会得到预期的结果。
关于ios - Swift 中的 "is"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829697/