我收到了我不明白的错误。任何帮助,将不胜感激。
我想重写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)
}
}
注意这里我根本不使用泛型。