2017-04-25 19 views
1

색인 범위를 벗어나는 문제로 인해 새로 고침 기능이 계속 실행되는 앱을 중단 시켰습니다. 그런 다음 목록을 비우고 나서 reloadData를 추가했습니다. 이제 빈 목록과 채워진 목록을 먼저로드하기 때문에 새로 고칠 때 깜박입니다. 목록을 비워야하거나 깜박임을 제거하려면 어떻게해야합니까? 테이블을 다시로드를 들어 빠른 3와 엑스 코드 8.2.1데이터 새로 고침시 테이블 새로 고침이 깜박임

func getData() 
{ 
    fetchedUsers.removeAll() 
    self.userTableView.reloadData() 

    //myphpfileurl 
    var request = URLRequest(url: URL(string: url)!) 
    request.httpMethod = "GET" 

    let configuration = URLSessionConfiguration.default 
    let session = URLSession(configuration: configuration, delegate: nil, delegateQueue: OperationQueue.main) 

    let task = session.dataTask(with: request) { (data, response, error) in 

     if (error != nil) { 
      print("Error") 
     } 
     else{ 
      do{ 
       let fetchedData = try JSONSerialization.jsonObject(with: data!, options: .mutableLeaves) as! NSArray 

       for eachFetchedUsers in fetchedData { 
        let eachUsers = eachFetchedUsers as! [String : Any] 
        let id = eachUsers["id"] as! String 
        let name = eachUsers["Nimi"] as! String 
        let email = eachUsers["Sahkoposti"] as! String 
        let company = eachUsers["Yritys"] as! String 

        self.fetchedUsers.append(Users(id : id, name: name, email : email, company: company)) 

       } 
       self.userTableView.reloadData() 
       self.refreshControl.endRefreshing() 
      } 
      catch{ 
       print("Error 2") 
      } 
     } 
    } 
    task.resume() 
} 
+0

'self.userTableView.reloadData() self.refreshControl.endRefreshing()' 당신이 필요로하는 시도 '{) ( 를 self.userTableView.reloadData() self.refreshControl.endRefreshing} MainThread 거기에 – dRAGONAIR

답변

0

를 사용하여 필자는 다음과 같이

DispatchQueue.main.async { 
     self.userTableView.reloadData() 
     self.refreshControl.endRefreshing() 
    } 
+0

을 'DispatchQueue.main.async를 호출하는 나는이 있지만 세포를 추가하려고 그들이 처음에는 비어있는 것처럼 계속 깜박입니다. 그리고 만약 내가 self.userTableView.reloadData() 라인 4에서 여러 번 새로 고칠 때 응용 프로그램이 충돌을 제거합니다. –

+0

@SimoKorpikoski는 restus API를 synchronus 모드에서 호출합니다. 하나의 함수는 나머지 api 코드를 수행하고 viewdidload에서이 함수를 호출합니다. –