拉动刷新添加相同的数据已经有
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 循环中,您可以在每次迭代时清空数据源。
我很难完成下拉刷新的实现。
当我拉动刷新时,它只会添加我已有的相同数据。所以我会得到相同的数据,乘以 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 循环中,您可以在每次迭代时清空数据源。