Swift 如何编写通用的ViewModel和ViewController类。我正在尝试从ViewModel访问变量,但未成功?

Swift 如何编写通用的ViewModel和ViewController类。我正在尝试从ViewModel访问变量,但未成功?,swift,generics,Swift,Generics,我试图创建两个泛型类。GenericViewModel和GenericUIViewController。我正在尝试访问(从GenericUIViewController)GenericViewModel中存在的变量,但未成功。我想我对编写这些泛型类的语法和方法不是很确定 通用视图模型: class ViewModel<T>{ public var items = [T]() init() { items = getItems() } public func getIt

我试图创建两个泛型类。GenericViewModel和GenericUIViewController。我正在尝试访问(从GenericUIViewController)GenericViewModel中存在的变量,但未成功。我想我对编写这些泛型类的语法和方法不是很确定

通用视图模型:

class ViewModel<T>{

public var items = [T]()

init() {
    items = getItems()

}

public func getItems() -> [T]{
    let items = [T]()
    return items
}
类视图模型{
公共变量项=[T]()
init(){
items=getItems()
}
公共函数getItems()->[T]{
让项目=[T]()
退货项目
}
}

GenericUIViewController:

class MyGenericViewController<ViewModel>: UIViewController{

    var model: ViewModel!
    var collectionView: MyCustomCollectionView!

    func assignDependencies(modelObject: ViewModel){
    self.model = modelObject
    }

    override func viewDidLoad() {
    super.viewDidLoad()

    // At the parameter 'sourceData' Xcode does not recognise 'model.items' 
     collectionView = MyCustomCollectionView.init(frame: view.frame, collectionViewLayout: layout, sourceData: model. , cellid: cellID, parentVC: self, spacingBetweenCells: spacing, numCellsPerRow: 3)

    }
类MyGenericViewController:UIViewController{
var模型:ViewModel!
var collectionView:MyCustomCollectionView!
func分配依赖项(模型对象:ViewModel){
self.model=modelObject
}
重写func viewDidLoad(){
super.viewDidLoad()
//在参数“sourceData”处,Xcode无法识别“model.items”
collectionView=MyCustomCollectionView.init(frame:view.frame,collectionViewLayout:layout,sourceData:model.,cellid:cellid,parentVC:self,单元格之间的间距:间距,NumCellsError:3)
}

我认为正确的代码是正确的。希望对您有所帮助

class MyGenericViewController: UIViewController{

var model: ViewModel<String>!
var collectionView: UICollectionView!

func assignDependencies(modelObject: ViewModel<String>){
    self.model = modelObject
}
类MyGenericViewController:UIViewController{
var模型:ViewModel!
var collectionView:UICollectionView!
func分配依赖项(模型对象:ViewModel){
self.model=modelObject
}

我认为正确的代码是正确的。希望对您有所帮助

class MyGenericViewController: UIViewController{

var model: ViewModel<String>!
var collectionView: UICollectionView!

func assignDependencies(modelObject: ViewModel<String>){
    self.model = modelObject
}
类MyGenericViewController:UIViewController{
var模型:ViewModel!
var collectionView:UICollectionView!
func分配依赖项(模型对象:ViewModel){
self.model=modelObject
}

或者如果需要ViewController具有通用ViewModelItemType,则:

类MyGenericViewController:UIViewController{
var模型:ViewModel!
func分配依赖项(模型对象:ViewModel){
self.model=modelObject
}
}

不确定原因,但可能是:)我认为Alexandr Kolesnik的评论就足够了!

或者如果您需要ViewController具有通用ViewModelItemType,那么:

类MyGenericViewController:UIViewController{
var模型:ViewModel!
func分配依赖项(模型对象:ViewModel){
self.model=modelObject
}
}
我不知道为什么,但也许。:)我想亚历山德科雷斯尼克的评论就足够了