拉动刷新添加相同的数据已经有

Pull to Refresh adds same data already have

我很难完成下拉刷新的实现。

当我拉动刷新时,它只会添加我已有的相同数据。所以我会得到相同的数据,乘以 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 之前删除所有的 objects ,但是不知何故在 [= 之前​​添加这一行 self.objects.removeAll() 不起作用16=] 在 handleRefresh 函数中。

有什么想法吗?谢谢!

self.objects.removeAll() 放在 for 循环之前,它应该可以正常工作。
通过将它放在 for 循环中,您可以在每次迭代时清空数据源。