我在模型类中有一个使用以下泛型的函数:
func loadNextPage<T: ListDiffable & JSONDecodable>(as: T.Type)
我从视图控制器中调用此函数,如下所示:
model.loadNextPage(as: EventJSONModel.self)
但是,由于可以使用我的视图控制器加载不同类型的数据,因此我需要在加载视图控制器时指定T.Type
。虽然我正在通过情节提要板加载视图控制器,但无法将其实例化为通用视图。
理想情况下,我想创建一个像这样的变量:
private var objectType: (ListDiffable & JSONDecodable).Type = EventJSONModel.self
然后像这样引用它:
model.loadNextPage(as: objectType)
但这不起作用...我该怎么办?
答案 0 :(得分:1)
您正在将Protocol.Type传递给通用的T.Type,这不能直接完成。虽然有一些黑客。
看看这个线程。
Why can't I pass a Protocol.Type to a generic T.Type parameter?