Здесь протоколы помогают.
вам нужен фиктивный протокол для подтверждения Next
на него
и используйте этот фиктивный протокол для проверки типов ваших предметов.
Поэтому мы создаем фиктивный протокол подтверждения Next
и используем этот протокол для сравнения items
.
код будет примерно таким.
class Base {
}
class Next<T> : Base where T : UIView {
var view: T
init(view: T) {
self.view = view
}
}
protocol MyType {
}
extension Next: MyType {}
let a: [Base] = [Next(view: UILabel()), Next(view: UILabel())]
for item in a {
if let _ = item as? MyType {
print("Hey!")
}
}
UIView
- суперкласс для всех UIElements
.
говоря, что это приведет к истине,
if let _ = UILabel() as? UIView {print("yes") }
Next
не подтверждает UIView
, а скорее требует чего-то, что подтверждает UIView
, поэтомувы не можете использовать подводные лодки UIView
, чтобы проверить, являются ли они Next
, у следующего нет точного типа,
здесь мы используем фиктивный протокол выше!