我在UIViewController
中有UINavigationController
。该视图控制器实现协议。
我正在尝试获取导航堆栈的第一个控制器并进行投射:
if let vc = _navigationStack.viewControllers?[0] as? ExplorerInterface {
return vc
}
但我收到错误:Cannot downcast from 'AnyObject?' to non-@objc protocol type 'ExplorerInterface'
。
我正在寻找一种解决此问题的方法,而无需在我的协议中添加@objc
关键字(因为此协议包含像元组一样的swift类型,@objc
关键字与Swift类型不兼容)
答案 0 :(得分:3)
表格Apple Doc:
只有标记了协议,才能检查协议一致性 使用@objc属性。即使你没有与之互操作 Objective-C,您需要使用@objc属性标记协议 如果您希望能够检查协议一致性。