В 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'. Звучит как ошибка. – MirekE
Связанный: [AnyObject не работает в Xcode8 beta6?] (Http://stackoverflow.com/questions/39033194/anyobject-not-working-in-xcode8-beta6) – Hamish