MVVM -1에서 이상한 점을 느낀 코드를 개선해 보기로 했다.
NewsListViewController에서 WebService를 의존하는데 V에서 서비스로직을 의존하는 것보다
VM에서 Service로직을 의존하게 하는 것이 바람직 하지 않을까?
private func setup(){
self.navigationController?.navigationBar.prefersLargeTitles = true
WebService().getArticles() { (articles) in
if let articles = articles {
self.articleListVM = ArticleListViewModel(articles: articles)
}
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
private func setup() {
self.navigationController?.navigationBar.prefersLargeTitles = true
self.articleListVM = ArticleListViewModel{ (result) in
if result{
DispatchQueue.main.async {
self.tableView.reloadData()
}
}
}
}
웹서비스를 통신을 통해 가져오는 서비스 로직을 articleListVM의 init메소드에서 하게 만듬
class ArticleListViewModel {
var articles: [Article] = [Article]()
init(_ callback:@escaping(Bool) -> ()){
WebService().getArticles{ (articles) in
if let articles = articles {
self.articles = articles
callback(true)
}
else{
self.articles = [Article]()
callback(false)
}
}
}
}