ios - Swift 中的 "is"关键字

标签 ios swift

据我所知,似乎共识是 Swift 关键字中的 isisKindOfClass 方法的同义词。

但是,我在执行以下操作时遇到了问题:

//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 不是。关于这是为什么的任何想法?

最佳答案

isisKindOfClass不是同义词,例如参见 Is there a difference between "is" and isKindOfClass()? .

但是,在您的情况下,问题是可选链接

selectedViewController?.isKindOfClass(ActivityViewController)

返回 Optional<Bool>这是nil如果调用是 制作(因为 selectedViewControllernil ),以及非 nil 否则值(value)。所以

selectedViewController?.isKindOfClass(ActivityViewController) != nil

为真如果可以进行调用,与是否 返回值为 truefalse .

if selectedViewController?.isKindOfClass(ActivityViewController) == true { ... }

你会得到预期的结果。

关于ios - Swift 中的 "is"关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32829697/

相关文章:

ios - UICollectionView 单元格 subview 不调整大小

ios - 快速恢复购买时崩溃

objective-c - 如何将 NSError.code 与 Swift 5 中的#defined 错误号进行比较

使用 OpenGL ES 2.0 的 iOS 360 视频

ios - LeftBarButtonItem 有两个按钮。一键不响应点击

ios - 确定出现的 View 是被推送还是来自导航栏中的后退按钮

ios - 处理通知中 View 的点击

ios - 在IOS中如何让webView适配指定的UIView?

swift - CKSubscription 返回错误,即在使用 FiresOnce 时查询必须至少具有一种触发模式

ios - 如何调暗父 UIView(50% 透明)以进行登录?