2015-09-20 2 views
1

J'ai du mal à terminer l'implémentation de Pull to Refresh.Pull to Refresh ajoute les mêmes données déjà

Lorsque je Tirer pour rafraîchir, il ajoute simplement les mêmes données que j'ai déjà. Je vais donc obtenir les mêmes données, multiplié par 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) 
     } 
    } 
} 

je commencé à penser que peut-être il était que je devais enlever tout de la objects avant que j'ai ajouté les nouveaux, mais de toute façon cela n'a pas fonctionné en ajoutant cette ligne self.objects.removeAll() avant self.objects.append(newPlay) en handleRefresh fonction.

Des idées? Merci!

Répondre

1

Mettez le self.objects.removeAll() avant la boucle for et cela devrait fonctionner correctement.
En le mettant dans la boucle for, vous videz votre source de données à chaque itération.

+1

Parfait. J'accepterai de répondre dans 2 minutes quand ça me le permettra. – SRMR

+0

Mettez également votre bloc dispatch_async après la boucle for. Il est appelé pour rien pour chaque article que vous avez. –

+0

Fera, merci! – SRMR