2015-09-20 40 views
1

我很難完成拉到刷新的實施。拉到刷新添加相同的數據已經有

當我拉到刷新,它只是添加我已經有的相同的數據。因此,我將得到同樣的數據,乘以2

viewDidLoad

override func viewDidLoad() { 
    super.viewDidLoad() 

    self.refreshControl?.addTarget(self, action: "handleRefresh:", forControlEvents: UIControlEvents.ValueChanged) 

    let query = CKQuery(recordType: "Play", predicate: predicate) 
    publicData.performQuery(query, inZoneWithID: nil) { results, error in 
     if error == nil { // There is no error 
      for play in results! { 
       let newPlay = Play() 

       newPlay.color = play["Color"] as! String 

       self.objects.append(newPlay) 

       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.tableView.reloadData() 
      }) 
      } 
     } 
     else { 
      print(error) 
     } 
    } 
} 

handleRefresh

func handleRefresh(refreshControl: UIRefreshControl) { 

    let query = CKQuery(recordType: "Play", predicate: predicate) 
    publicData.performQuery(query, inZoneWithID: nil) { results, error in 
     if error == nil { // There is no error 
      for play in results! { 
       let newPlay = Play() 

       newPlay.color = play["Color"] as! String 

       self.objects.append(newPlay) 

       dispatch_async(dispatch_get_main_queue(), {() -> Void in 
        self.tableView.reloadData() 
        refreshControl.endRefreshing() 
      }) 
      } 
     } 
     else { 
      print(error) 
     } 
    } 
} 

我開始想,也許這是我需要刪除所有的objects之前,我附加了新的,但不知何故沒有工作,添加此行self.objects.removeAll()之前self.objects.append(newPlay)handleRefresh函數。

任何想法?謝謝!

回答

1

在for循環之前放入self.objects.removeAll(),它應該正常工作。
通過將它放在for循環中,可以在每次迭代時清空數據源。

+1

完美。它會讓我在2分鐘內接受答案。 – SRMR

+0

也可以在for循環之後放置dispatch_async塊。它被稱爲沒有爲你有每個項目。 –

+0

會做,謝謝! – SRMR

相關問題