我一直在思考如何编写CloudKit完成块。我的问题是我正在加载数据,然后将数据放在tableView中。问题是我必须用一个按钮手动刷新tableView,而不是将数据自动加载到其中。我需要的是在查询结束时使用一个完成块来重新加载表数据。下面是我的查询功能:
func loadGroupPage() {
print("should go")
let pred = NSPredicate(format: "groupName = %@", "\(selectedCellName)")
let query = CKQuery(recordType: "Group", predicate: pred)
let operation = CKQueryOperation(query: query)
operation.recordFetchedBlock = { (record: CKRecord!) in
operation.qualityOfService = .default
if record != nil{
self.recordToUpdate = record
if creatingNewPost == true{
print(feed)
feed.append(postText)
creatingNewPost = false
self.saveNewPost()
}
self.publicOrPrivate = (record.object(forKey: "PublicOrPrivate") as! String)
if self.publicOrPrivate == "Public"{
}else if self.publicOrPrivate == "Private"{
self.requests = (record.object(forKey: "Requests") as! Array)
}
if self.groupMembs.contains(username) || members.contains(username){
self.joinBtn.alpha = 0
}else{
self.joinBtn.alpha = 1
}
if self.leaders.contains(username) && self.publicOrPrivate == "Private"{
self.requestsTableView.alpha = 1
}else{
self.requestsTableView.alpha = 0
}
if self.groupMembs.contains(username) || self.publicOrPrivate == "Public"{
feed = (record.object(forKey: "groupFeed") as! Array)
print(feed)
}else{
}
self.groupMembs = (record.object(forKey: "memberUsernames") as! Array)
print(self.groupMembs)
self.numberOfMembersInGroup = self.groupMembs.count
self.groupNameLbl.text = selectedCellName
self.numberOfMembersLbl.text = "\(self.numberOfMembersInGroup) Members"
self.leaders = (record.object(forKey: "leaders") as! Array)
self.requestsTableView.reloadData()
self.groupFeedTableView.reloadData()
}
}
database.add(operation)
}
正如我在上面的代码中所记录的那样,在那里刷新表不会在实际的UI中加载任何内容。有人能帮我写一个完成块来重新加载tableView吗?谢谢