swift - 是否有一种简单的类似 swift 的方法来匹配 case 语句中的确切类?

标签 swift

我已经这样做了:

func doSomething(anObject: AnyObject)
{
    switch anObject {
    case let myObj as MyClass:
        println("Is a kind of MyClass")
    case let yourObj as YourClass:
        println("Is a kind of YourClass")
    default:
        break
    }
}

正如您所期望的那样,MyClassYourClass 的类和子类会导致执行相关的打印语句。

但是,我有一个情况,我希望它匹配一个确切的类(而不是该类的任何子类)。理想情况下,我想要像 case let myObj as MyClass: 行一样简单而优雅的东西,例如 case let myObj as正是 MyClass: 。在 Swift 中可能有这样的事情吗?否则,在 case 语句中实现此目的最优雅、最简洁的方法是什么?

最佳答案

class A {}
class B: A {}

let b = B()

let b_is_exactly_a = b.dynamicType === A.self // false
let b_is_exactly_b = b.dynamicType === B.self // true
let b_is_a = b is A // true
let b_is_b = b is B // true

关于swift - 是否有一种简单的类似 swift 的方法来匹配 case 语句中的确切类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29736574/

相关文章:

ios - 使用图像选择器将图像加载到两个 Collection View 单元格

iOS - 在 Swift 中获取集合异步属性的最佳实践

ios - Firebase 登录错误消息未显示

swift - 使用未声明的类型 'NSFetchedResultsController' ...我怎样才能消除这个错误?

ios - Swift NSURLSession 和身份验证

Swift NSTextField,在 Cmd + Enter 上执行

ios - 不知何故结合搜索 Controller 不起作用,知道吗?

swift - 使用函数时编译时间长(Swift 4)

ios - Swift - 交付应用程序上的本地通知图标角标(Badge)编号更新在后台

ios - 使用手势识别器