在Swift 3中,我不再能够检查泛型变量类型是否为类(AnyObject
)。以下代码返回true
为isObject
即使特定类型T
和传递的值是结构,而不是类。在Swift 2.3和2.2中,它按预期工作,isObject
是false
。如何测试泛型变量是否为AnyObject类型
struct Foo<T>
{
var value: Any?
var isObject: Bool = false
init (val: T?)
{
if val != nil
{
// following line shows warnings in Swift 3
// conditional cast from 'T?' to 'AnyObject' always succeeds
// 'is' cast is always true
isObject = val is AnyObject
self.value = val
}
}
}
struct Bar
{
var bar = 0
}
let b = Foo<Bar>(val: Bar())
print(b.isObject) // -> true
我怎样才能使它在Swift 3中正常工作?
即使'90是AnyObject'返回'true'。听起来像是一个bug。 – MirekE
相关:[AnyObject不工作在Xcode8 beta6?](http://stackoverflow.com/questions/39033194/anyobject-not-working-in-xcode8-beta6) – Hamish