이해할 수없는 오류가 발생합니다. 어떤 도움을 주시면 감사하겠습니다.
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)
}
}
여기서는 제네릭 을 전혀 사용하지 않습니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다