2017-12-07 7 views
1

Alamofire를 사용하여 API에서 응답을 받으면 tableviews에 데이터를로드하지만 alamofire 기능은 작동하지만 일부 뷰 컨트롤러에서만 작동하지 않습니다. 그리고 디버거를 사용하여 데이터와 코드를 따라했기 때문에 alamofire 함수를 알았지 만 함수가 함수의 첫 번째 줄보다 앞서 가지 않는 문제를 보았습니다.Alamofire를 사용하여 API에서 응답 받기

Alamofire 기능

Alamofire.request("\(baseURL)").responseJSON { response in 
      if let dict = response.result.value as? [[String: Any]] { 
       for obj in dict { 
        let latest = LatestNews(getLatest: obj) 
        self.moreNews.append(latest) 
       } 
      } 
      self.tableView.reloadData() 
     } 

배열과 모델 클래스

var latestNews: LatestNews! 

var moreNews = [LatestNews]() 

답변

1

당신이 겪고있는 문제 .. "이 아니라 다른 사람의 일부 뷰 컨트롤러에서 작동" 는 백그라운드 스레드에서 tableView를 다시로드한다는 사실의 결과입니다. 다음과 같이 메인 스레드로 이동해야합니다.

DispatchQueue.main.async { 
     self.tableView.reloadData() 
    }