0
このコードはMVVMアーキテクチャの正しい実装ですか?私はTableViewで将来の使用のためにプライベートプロパティにダウンロードした配列を保持することができますか、またはすべてのコストでそのような状況を避ける必要がありますか?Arrayを使用したSwift ViewModelの実装
コード:
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()
}
私も答えを探していました。面白い点IMOは、あなたがViewControllerからgetStop(atIndex :)を呼び出さなければならないということです。それはMVVMのパターンを破るか? VCがモデルについて知っていなければならないからです(この場合はStop)。 getStopParameter(atIndex :)関数を持つ方が良いですか?代わりにself.stops [index] .parameterを返しますか? – mrhangz