У меня есть UIStackView
, который содержит UIView
s или объекты созданного мною класса с именем MyView
.
MyView
- это подкласс UIView
.
Я хочу извлечь из этого массива все объекты класса MyView
.
Это то, что я пробовал, и соответствующие ошибки:
let views = Array< MyView >(allViews).filter { $0 is MyView }
тип выражения неоднозначно без контекста
Мне нравятся эти сообщения, которые ничего не говорят.
let views = Array<Any>(allViews).filter { $0 is MyView }
Мне нравится, как это компилируется с Any
.
В этом нет ошибок регистр, но views
содержит те же объекты, что и myViews
, ничего не фильтруется.
Я понимаю, что MyView
является подклассом UIView
, поэтому Swift тестирует здесь, если объект имеет класс UIView
. Если это правда, зачем беспокоиться о разрешении программистам указывать какой-либо класс в фильтре, если он может фильтровать только некоторые классы?
Есть ли способ проверить подклассы?