在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