2015-09-20 41 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

相关问题