Быстрая динамическая проверка типов для структур?

Я запутался в динамической проверке типов в Swift.

В частности, у меня есть странный случай, когда я хочу написать (или найти) функцию:

func isInstanceOf(obj: Any, type: Any.Type) -> Bool

В Objective-C этоisKindOfClass, но это не сработает, потому чтоAny.Type включает в себя структуры Swift, которые не являются классами (гораздо меньшеNSObject подклассы).

Я не могу использовать Swiftis здесь, потому что это требует жестко закодированного типа.

Я не могу использоватьobj.dynamicType == type потому что это будет игнорировать подклассы.

Свифт книга кажется, предполагает, что эта информация потеряна и не доступна для структур вообще:

У классов есть дополнительные возможности, которых нет у структур:

...

Приведение типов позволяет проверять и интерпретировать тип экземпляра класса во время выполнения.

(В главе «Приведение типов» говорится, что «приведение типов в Swift реализовано с помощью операторов is и as», поэтому определение «приведение типов» представляется более широким, чемна других языках.)

Тем не менее, это не может быть правдой, чтоis/as не работайте со структурами, так как вы можете поместить строки и целые в[Any]и вытащить их позже, и использоватьis String или жеis Int выяснить, что они были. Глава «Кастинг шрифтов» Свифт-книги делает именно это!

Есть ли что-то такое же мощное, какisKindOfClass но для каких-либо экземпляров Swift? Эта информация все еще должна существовать во время выполнения, верно?

Ответы на вопрос(2)

Ваш ответ на вопрос