Ios 在Swift中强制转换从UINavigationController提取的viewController
我在Ios 在Swift中强制转换从UINavigationController提取的viewController,ios,objective-c,uinavigationcontroller,swift,Ios,Objective C,Uinavigationcontroller,Swift,我在UINavigationController中有UIViewController。该视图控制器实现一个协议 我正在尝试获取导航堆栈的第一个控制器并将其强制转换为: if let vc = _navigationStack.viewControllers?[0] as? ExplorerInterface { return vc } 但我得到了一个错误:无法从'AnyObject'向下转换为非@objc协议类型'ExplorerInterface' 我正在寻找一种方法来解决此问题,而
UINavigationController
中有UIViewController
。该视图控制器实现一个协议
我正在尝试获取导航堆栈的第一个控制器并将其强制转换为:
if let vc = _navigationStack.viewControllers?[0] as? ExplorerInterface {
return vc
}
但我得到了一个错误:无法从'AnyObject'向下转换为非@objc协议类型'ExplorerInterface'
我正在寻找一种方法来解决此问题,而无需将@objc
关键字添加到我的协议中(因为此协议包含类似swift类型的元组,并且@objc
关键字与swift类型不兼容)表单Apple文档:
只有在协议已标记的情况下,才能检查协议一致性
使用@objc属性。即使您没有与
Objective-C,您需要使用@objc属性标记协议
如果您希望能够检查协议一致性
检查