Когда у меня есть необязательное значение класса, которое соответствует протоколу, проверка типов не работает должным образом.Например:
import Foundation
protocol MyProtocol { }
class MyClass: MyProtocol { }
let myClass: MyClass = MyClass()
let myClassType = type(of: myClass)
print("myClassType is MyClass.Type: \(myClassType is MyClass.Type)")
print("myClassType is MyProtocol.Type: \(myClassType is MyProtocol.Type)")
let myClassOpt: MyClass? = MyClass()
let myClassTypeOpt = type(of: myClassOpt)
print("myClassTypeOpt is MyClass?.Type: \(myClassTypeOpt is MyClass?.Type)")
print("myClassTypeOpt is MyProtocol?.Type: \(myClassTypeOpt is MyProtocol?.Type)")
Вывод:
myClassType is MyClass.Type: true
myClassType is MyProtocol.Type: true
myClassTypeOpt is MyClass?. Тип: true
myClassTypeOpt is MyProtocol? .Type: false
Ожидаемое значение последней проверки типа - true, но получено false.
Есть ли другой способ проверить тип в этом случае?