无法从'UIViewController'转发到更可选的类型'SubclassOfUIViewController <nsstring>'

时间:2016-10-09 08:01:44

标签: objective-c swift3

我有一个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>!'

添加问号而不是感叹号无济于事。

我该如何解决?

1 个答案:

答案 0 :(得分:3)

您通常不会使用as?投射的可选类型。

尝试删除!

    if let vc = segue.destinationViewController as? SubclassOfViewController<NSString> {