0
所以基本上我試圖定義一個通用的viewmodel協議,從中我可以定義所有其他視圖模型...但是其中的數據需要保持通用...讓我說我定義協議象下面這樣:使用通用協議實例化ViewModel數據
protocol GenericVMProtocol {
associatedtype T
var items: [T] { get }
}
接下來,我符合我的虛擬機,並定義數據:
class VM: GenericVMProtocol {
typealias T = String
var items: [String] = ["A", "B" , "C"]
}
現在一切工作正常,但是當我要遵守我的VC發生問題VMP協議像這樣:
class VC: UIViewController {
var vm: GenericVMProtocol
override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
vm = VM()
super.init(nibName: nil, bundle: nil)
}
func items() {
print(vm.items)
}
required init?(coder aDecoder: NSCoder) {
fatalError()
}
}
即時得到錯誤:
Protocol 'GenericVMProtocol' can only be used as a generic constraint because it has Self or associated type requirements
......我必須說我很無能,如果我錯過了一些邏輯或我的想法是錯誤的..所以我希望得到任何幫助! TNX :)