小编Rob*_*ado的帖子

Swift仿制药推迟了问题

我正在努力做到这一点,但我遇到了一些麻烦

这是CustomProtocol

protocol CustomProtocol {

}
Run Code Online (Sandbox Code Playgroud)

SubCustomProtocol

protocol SubCustomProtocol: CustomProtocol {

}
Run Code Online (Sandbox Code Playgroud)

SubCustomProtocolImplementation

class SubCustomProtocolImplementation: SubCustomProtocol {

}
Run Code Online (Sandbox Code Playgroud)

这是CustomClass

class CustomClass<P: CustomProtocol> {

    var customProtocol: P?

    func doSomething() {

    } 

}
Run Code Online (Sandbox Code Playgroud)

SubCustomClass

class SubCustomClass<P: SubCustomProtocol>: CustomSubClass {

}
Run Code Online (Sandbox Code Playgroud)

和我的BaseViewController

class BaseViewController<P: CustomProtocol, T: CustomClass<P>>: UIViewController {

    var foo: T!

    override func viewDidLoad() {
        super.viewDidLoad()
        foo?.doSomething()
    }
}
Run Code Online (Sandbox Code Playgroud)

我的ViewController

class ViewController<P: SubCustomProtocolImplementation, T: SubCustomClass<P>>: BaseViewController<P,T> {

    override func viewDidLoad() {
        super.viewDidLoad()
    }
}
Run Code Online (Sandbox Code Playgroud)

在我称之为foo?.doSomething()的行中,它说'T'不是'CustomClass <'P'>'的子类型,我不知道我做错了什么

在ViewController声明中,它说"BaseViewController要求T继承自CustomClass <'P'>"

希望你能帮我!

generics protocols generic-programming swift

6
推荐指数
1
解决办法
55
查看次数

标签 统计

generic-programming ×1

generics ×1

protocols ×1

swift ×1