作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我收到一个我不明白的错误。任何帮助将不胜感激。
我想覆盖一个 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/
我是一名优秀的程序员,十分优秀!