Swift 3 Generic Type用法

时间:2017-05-10 08:24:03

标签: ios swift swift3

首先,我有一个协议:

public protocol ContentList {
//...
}

和一些struct s:

public struct Post: ContentList {
//...
}
public struct Essay: ContentList {
//...
}

然后我有UITableViewController的子类:

open class MainTableViewController<T: ContentList>: UITableViewController {
    // ...
    func getData() -> [T] {
        retrun ...
    }
}

此类的用户界面部分MainTableViewController已在Main.storyboard中定义,因此我执行了此操作:

let kMainTableViewControllerIdentifier = "MainTableViewController"
let listController = (self.storyboard.instantiateViewController(withIdentifier: kMainTableViewControllerIdentifier) as? MainTableViewController<Post>)!
listController.dataSourceType = .post

我收到了一些错误:

Unknown class _TtC5Elias23MainTableViewController in Interface Builder file.
Could not cast value of type 'UITableViewController' (0x1af463db8) to 'Elias.MainTableViewController<Elias.Post>' (0x101907af8).

 Could not cast value of type 'UITableViewController' (0x1af463db8) to 'Elias.MainTableViewController<Elias.Post>' (0x101907af8).

到目前为止,我对如何解决这个问题一无所知。所以我需要一些帮助。

1 个答案:

答案 0 :(得分:1)

确保您的视图控制器也被定义为故事板中的MainTableViewController!

enter image description here