我正在尝试检查符合协议(protocol)的实例类。
我有一个协议(protocol)。
protocol ToolbarProtocol {
func show()
func hide()
}
我有一个符合该协议(protocol)的类。
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
})
}
我无法在 toolbar
上调用 isKind(of)
,以前当我的工具栏是由外部库(我我试图从我的代码库中删除,因为我想要不同的功能)。
我尝试让我的协议(protocol)扩展 AnyObject
,但我认为这无论如何都是隐含的,并且没有效果。
如何检查符合给定协议(protocol)的实例数组,以检查特定的类类型?
最佳答案
我认为你需要尝试转换它,比如
if let vc = toolbar as? GameToolbar {}
在您的情况下,您可能需要这样的东西:
func getDebugToolbar() -> ToolbarProtocol? {
return existingToolbars[.east]?.first(where: { (toolbar: ToolbarProtocol) -> Bool in
let _ = toolbar as? GameToolbar
})
}
关于swift - 如何快速检查符合协议(protocol)的实例类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51169114/