gpt4 book ai didi

ios - 如何在我正在子类化的类中返回 Swift 中的泛型类型

转载 作者:行者123 更新时间:2023-11-29 02:10:47 26 4
gpt4 key购买 nike

我收到一个我不明白的错误。任何帮助将不胜感激。

我想覆盖一个 BaseViewController 类并像这样返回一个 TableViewHandler 的子类

class VenueViewController: BaseViewController {

override func tableHandler<T : TableViewHandler>() -> T? {
return VenuesTableViewHandler(delegate: self) // Error here VenuesTableViewHandler is not convertible to 'T'
}

}

这是我的 BaseViewController 的样子

class BaseViewController: UIViewController {

var tableViewHandler: AnyObject! {
get {
return self.tableHandler()
}
}

func tableHandler<T: TableViewHandler >() -> T? {
return nil
}
}

我收到错误消息“VenuesTableViewHandler 无法转换为‘T’”。如果有帮助,这就是 TableViewHandler 类的样子。

TableViewHandler 是一个像这样的类

class TableViewHandler: NSObject, UITableViewDelegate, UITableViewDataSource {

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 0
}

///etc

}

这就是 TableViewHandler 子类的样子

class VenuesTableViewHandler: TableViewHandler {

init(delegate: VenueListProtocol) {
self.delegate = delegate
super.init()
}

}

最佳答案

仍然不完全清楚您正在尝试什么,以下内容是否符合您的需求?

class TableViewHandler: NSObject, UITableViewDelegate, UITableViewDataSource {

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 0
}

///etc

}

class BaseViewController: UIViewController {

var tableViewHandler: TableViewHandler {
get {
assertionFailure("Must override ...")
//return TableViewHandler()
}
}
}

class VenuesTableViewHandler: TableViewHandler {
init(delegate: AnyObject) {
// Custom implementation
}
}

class VenueViewController: BaseViewController {

override var tableViewHandler: TableViewHandler {
return VenuesTableViewHandler(delegate: self)
}
}

请注意,我根本不使用泛型。

关于ios - 如何在我正在子类化的类中返回 Swift 中的泛型类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29304821/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com