重新加载UITableView里面的闭包会导致奇怪的行为

时间:2014-11-29 13:36:14

标签: swift ios8 closures cloudkit

我正在使用CloudKit来抓取CKRecords来填充UITableViewoperations数组充当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更新后调用上面的代码。

0 个答案:

没有答案