簡體   English   中英

如何將泛型指定為變量?

[英]How to specify generic type as variable?

我在使用以下泛型的模型類中有一個函數:

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)

但這不起作用...我該怎么做?

您正在將Protocol.Type傳遞給通用T.Type,這不能直接完成。 雖然有一些黑客。 簽出此線程。
為什么不能將Protocol.Type傳遞給通用T.Type參數?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM