Derzeit entwickle ich eine iOS-Anwendung mit MVVMC-Architektur. Ich habe eine Idee über MVVMC bekommen, indem ich diese article gelesen habe. Als typisches MVVM-Modell wissen wir, dass alle wichtigen App-Controller wie Web-Service-Aufrufe die ViewModel-Klasse aufrufen sollten. Aber in der MVVMC-Architektur können wir entweder Koordinator oder ViewModel verwenden, um Web-Services aufzurufen. Ich konnte nicht herausfinden, wo der beste Platz dafür ist.Was ist der beste Ort, um Web-Services in iOS-Anwendungen mit MVVMC-Architektur aufzurufen?
Ich versuche derzeit, Benutzerliste Seite der Anwendung mit UITableViewController zu implementieren. Im Folgenden sind einige Teile meiner UserCoordinator- und UserViewModel-Klassen aufgeführt.
UserCoordinator
class UsersCoordinator: Coordinator {
var window: UIWindow
weak var delegate: UsersCoordinatorDelegate?
var selectedCity: City?
init(window: UIWindow) {
self.window = window
}
func start() {
let storyboard = UIStoryboard(name: "Users", bundle: nil)
if let vc = storyboard.instantiateViewController(withIdentifier: "list") as? UsersListController {
var viewModel = UsersListViewModel()
viewModel.delegate = self as UsersListViewModelDelegate
viewModel.veiwController = vc
vc.viewModel = viewModel
vc.coordinationDelegate = self as CoordinationDelegate
let nav = UINavigationController.init(rootViewController: vc)
window.rootViewController = nav
}
}
UserViewModel
protocol UsersListViewModelDelegate: class {
func selectUser(viewController: UIViewController, city: City)
}
struct UsersListViewModel {
var delegate: UsersListViewModelDelegate?
weak var veiwController: UsersListController!
var source = [String]()
init() {
for user in users {
source.append(user.name)
}
}
func selectRow(row: NSInteger) {
delegate?.selectUser(viewController: veiwController, user: users[row])
}
fileprivate var users: [User] {
get {
//web service call??
}
Wo soll ich den Web-Service hier nennen? Wie ich theoretisch gelesen habe, ist Coordinator der dedizierte Ort für Application Routing. Daher ist es besser, Web-Services in ViewModel aufzurufen. Aber ich denke, es ist besser, Web-Services im Coordinator aufzurufen, weil sie Daten sehr schnell laden und das viewModel füllen. Was soll ich machen?
Ja. Ich habe bereits eine Serviceklasse erstellt und gesucht, wo diese Methoden aufgerufen werden können. Wie du gesagt hast fühle ich mich auch im Koordinator besser aufgehoben. Vielen Dank. – TharinduKetipe