Swift 如何编写通用的ViewModel和ViewController类。我正在尝试从ViewModel访问变量,但未成功?
我试图创建两个泛型类。GenericViewModel和GenericUIViewController。我正在尝试访问(从GenericUIViewController)GenericViewModel中存在的变量,但未成功。我想我对编写这些泛型类的语法和方法不是很确定 通用视图模型: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
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
}
}
我不知道为什么,但也许。:)我想亚历山德科雷斯尼克的评论就足够了