3
我試圖在我的應用程序上推送MVVM模式,但我發現使用Swift和泛型非常困難。例如:Swift的泛型和協議問題
我的模型圖層上有一個Comic
結構。但我希望我的viewControllers
消費符合ComicViewModel
協議的對象,以增加顧慮的分離。
我包裹在一個名爲Box
類的模型結構是這樣定義的:
public class Box<T> {
public let value: T
public init(_ value: T) { self.value = value }
}
這僅用於在Result
枚舉來包裝實際的返回值就像一個解釋here
然而,Swift編譯器似乎並不喜歡從Comic
到ComicViewModel
的演員陣容,即使我明確定義了演員陣容:
func sampleComics() -> Box<Comic> {...}
protocol ComicViewModel {...}
extension Comic : ComicViewModel {...}
func fetchComicsViewModel() -> Box<ComicViewModel> {
return sampleComics() //ERROR
}
有充分的操場here。
非常感謝您的幫助!
見關於devforums這個話題:https://devforums.apple.com/message/1101023#1101023 – rintaro
非常傷心,聽到這個......因爲它並不像'Box'ing值那麼簡單,爲了解決這個編譯器限制,我還有很多其他層要深入並進行轉換 –