Xcode 7 Swift 2无法实例化通用UITableViewController的UIViewController子类

我有一个generics类:

class PaginatedTableViewController <GenericElement, Source: PaginationDataSource where Source.PaginatedGenericElement == GenericElement>: UITableViewController 

另一个我试图从故事板实例化:

 class CandidatesTableViewController: PaginatedTableViewController<Match, MatchPaginationDataSource> 

我无法在故事板自定义类下拉菜单中findCandidatesTableViewController 。 如果我强制它,然后在代码中投我的控制器,应用程序崩溃在运行时抱怨我的控制器(这应该是一个CandidatesTableViewController实例)实际上是一个UITableViewController实例。

未知类_TtC21MyProjectName29CandidatesTableViewController在Interface Builder文件中。 无法将types'UITableViewController'(0x1040917f8)的值转换为“MyProjectName.CandidatesTableViewController”(0x1013a9890)。

在我的项目中,这个控制器被embedded到另一个中,

 tableViewController = (segue.destinationViewController as! CandidatesTableViewController) 

有谁知道如何解决这个问题?

不幸的是,通用的Swift类对Objective-C代码是不可见的,而且在Interface Builder(故事板和xibs)中也不支持。 我觉得这两点密切相关。

作为一个解决scheme,我build议你使用聚合:不要让你看到控制器通用,但提取一些逻辑到另一个(通用)类,并在您的视图控制器中使用它。

如果您手动通过load()方法(即调用load()手动将通用VC加载到Objective-C运行库中,则可能是这样。 PaginatedTableViewController.load()在您的应用程序委托的init方法中。 从https://stackoverflow.com/a/43896830/671580的想&#x6CD5;