Swift泛型类继承无法匹配类型

时间:2018-08-19 21:19:45

标签: ios swift generics inheritance

我正在制作一些有用的类来删除一些样板代码,但偶然发现this问题,但似乎找不到解决方法。

编辑:我想提一提,我确实了解问题,并且无法解决;但是,我正在寻找解决该问题的方法,以达到某种所需的效果。我希望能够访问从具有参数化的泛型类或协议的超类继承的类中的子类

预期行为

迅速的编译器应该能够推断出通用类/协议是相关的,因此它是超类的子类。

当前行为

编译器抛出以下两个错误:

无法将“类”类型的值转换为预期的参数类型“超类”

在这种情况下的类是:

Class: Superclass<ProtocolInheritanceOfSuperProtocol>

可能的解决方案

我想不出任何解决方案。我死定了。

复制步骤

protocol ViewModel {}

class Superclass<ModelType> {

}

class Subclass: Superclass<ViewModel> {

}

protocol ViewModelInheritance: ViewModel {

}

class SubclassB: Superclass<ViewModelInheritance> {

}

class Cell {

    var viewModel: ViewModel!

}

class Controller<Cell: Superclass<ViewModel>> {

}

let controller = Controller<Subclass>()
let secondController = Controller<SubclassB>() // Throws error

上下文(环境)

使用Swift 4.1无法在Xcode 9.4.1(9F200)的版本上编译此代码

附加说明

Stackoverflow post that I think is most related to my problem

0 个答案:

没有答案