如何在Swift 3中检查变量是否为AnyObject类型

时间:2017-03-20 10:30:22

标签: swift swift3

我正在将项目从Swift 2.2迁移到Swift 3并遇到以下问题。

如果给定输入的类型为AnyObject,我有一个函数测试 简化的实现可能如下所示:

func testIfIsObjectType(input: Any?) -> Bool {
    if input is AnyObject {
        return true
    }
    return false
}

在Swift 2.2中,以下内容返回false

let intValue = 3
let result = testIfIsObjectType(input: intValue)
print(result)

在Swift 3.3中,它返回true

问题是由于所有类型(类型Any)现在都可以转换为AnyObject这一事实造成的。

例如,在Swift 3中,您现在可以写:

let someType: Any = 1
let someObject = someType as AnyObject

请注意as而不是as?as!,必须在Swift 2中使用。

如何检查input是否属于AnyObject类型,因此函数将返回false,如Swift 2中所示。

解决方案:

func testIfIsObjectType(input: Any?) -> Bool {
    if type(of: input) is AnyClass {
        return true
    }
    return false
}

0 个答案:

没有答案