Я пытаюсь проверить класс экземпляра, который соответствует протоколу.
У меня есть протокол.
protocol ToolbarProtocol {
func show()
func hide()
}
У меня есть класс, соответствующий этому протоколу.
class GameToolbar: ToolbarProtocol {
...
}
У меня есть класс менеджера, который я создал для управления панелями инструментов.
class ToolbarManager {
var existingToolbars: [Game.rotation: Array<ToolbarProtocol>]
}
В этом менеджере у меня есть функция, которая хочет найти первый экземпляр панели инструментов определенного типа.
func getDebugToolbar() -> ToolbarProtocol? {
return existingToolbars[.east]?.first(where: { (toolbar: ToolbarProtocol) -> Bool in
toolbar.isKind(of: GameToolbar.self) //This line causes an error because .isKind is not a member of ToolbarProtocol
})
}
Я не могу вызвать isKind(of)
на toolbar
, который раньше работал, когда мои панели инструментов представляли собой класс другого типа, предоставляемый внешней библиотекой (которую я пытаюсь удалить из своей кодовой базы, потому что я хочу другой функциональности) .
Я пытался расширить мой протокол AnyObject
, но я думаю, что это все равно неявно, и это не имело никакого эффекта.
Как я могу проверить массив экземпляров, которые соответствуют заданному протоколу, чтобы проверить определенные типы классов?