我有一个UIViewController的子类,定义如下
@interface SubclassOfViewController<__covariant Type> : UIViewController
@end
@implementation SubclassOfViewController @end
我将此子类作为屏幕更改中的segue发送。
现在在prepareForSegue中,我正在尝试执行以下操作
public override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if(segue.identifier == "embeddedScroll"){
if let vc = segue.destinationViewController as? SubclassOfViewController<NSString>!{
vc.dataSource = genericDataSource
}
}
}
并收到以下消息:
Cannot downcast from 'UIViewController' to a more optional type 'SubclassOfViewController<NSString>!'
添加问号而不是感叹号无济于事。
我该如何解决?
答案 0 :(得分:3)
您通常不会使用as?
投射的可选类型。
尝试删除!
。
if let vc = segue.destinationViewController as? SubclassOfViewController<NSString> {