Реализация Swift ViewModel с массивом

Является ли этот фрагмент кода правильной реализацией архитектуры 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()
}

1 ответ

  1. После разговора с некоторыми старшими разработчиками на работе, они сказали мне, что это путь, которым они обычно идут. Так как хранение массива внутри модели представления не нарушает шаблон MVVM, делает его действительно легким для повторного использования данных и очищает dataservice от хранения дополнительных полей (что делает его более многоразовым).