使用Array实现Swift ViewModel

时间:2017-01-15 16:01:36

标签: ios swift mvvm

这段代码是否是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 个答案:

答案 0 :(得分:0)

在与一些高级开发人员交谈后,他们告诉我这是他们通常采用的方式。由于将数组保留在视图模型中不会破坏MVVM模式,因此可以非常轻松地重用数据并清除数据服务以保留其他字段(使其更具可重用性)。