我正在使用CloudKit
来抓取CKRecords
来填充UITableView
。
operations
数组充当tableView
let predicate = NSPredicate(value: true)
let query = CKQuery(recordType: "Operation", predicate: predicate)
let queryOperation = CKQueryOperation(query: query)
operations = []
queryOperation.recordFetchedBlock = {
record in
self.operations.append(record)
}
queryOperation.queryCompletionBlock = {
cursor, error in
if error == nil {
dispatch_sync(dispatch_get_main_queue(), {self.tableView.reloadData()})
}
}
let database = CKContainer.defaultContainer().privateCloudDatabase
database.addOperation(queryOperation)
如果我只是在闭包中使用self.tableView.reload()
,那么tableView会更新但是有5-10s的延迟,除非我滑动tableView突然显示的单元格。但是,当我在主线程上调度时(如上面的代码中所示),tableView单元格将显示但有时顶部单元格开始闪烁或呈现非常奇怪。我想知道是否有人有关于如何在此闭包内实现tableView.reloadData()
的任何提示?
编辑:当我从viewDidLoad
调用上述代码时,似乎只会出现此行为。如果我在tableview更新后调用上面的代码。