这段代码是否是MVVM架构的正确实现?我想知道我是否可以将下载的数组保存在私有属性中以供将来在TableView中使用,还是应该不惜一切代价避免这种情况?
代码:
import Foundation
class StopsViewModel {
weak var delegate: StopsViewModelDelegate?
private let dbService: DatabaseService
private var stops = [Stop]()
init(withDbService dbService: DatabaseService) {
self.dbService = dbService
}
func loadStops() {
dbService.getStops(completion: { [weak self] stops in
self?.stops = stops
self?.delegate?.getStopsCallFinished()
})
}
func getStop(atIndex index: Int) -> Stop {
return self.stops[index]
}
func getRowCount() -> Int {
return self.stops.count
}
func getSectionsCount() -> Int {
return 1
}
}
protocol StopsViewModelDelegate: class {
func getStopsCallFinished()
}
答案 0 :(得分:0)
在与一些高级开发人员交谈后,他们告诉我这是他们通常采用的方式。由于将数组保留在视图模型中不会破坏MVVM模式,因此可以非常轻松地重用数据并清除数据服务以保留其他字段(使其更具可重用性)。