就是这种情况——我正在使用一个简单的 UITableView 来呈现来自 CloudKit publicDB 的记录。当我运行该应用程序时,查询操作返回例如返回 2 个结果(这就是它目前的全部)。
我的表格视图有一个刷新控件,当我拉动刷新时,我得到零结果,如果我继续重新加载,最终可能会出现结果,但现在总是。
同样的事情也会发生更多的结果,我曾经有我查询过的 CKLocation 类型,并且响应总是不同的,没有任何常识
一些示例代码(本例中的谓词是 TRUEPREDICATE - 没什么特别的):
let sort = NSSortDescriptor(key: "creationDate", ascending: false)
let query = CKQuery(recordType: "Tests", predicate: DiscoveryMode.getPredicate())
query.sortDescriptors = [sort]
var operation = CKQueryOperation(query: query)
if lastCursor != nil {
operation = CKQueryOperation(cursor: lastCursor)
}
operation.resultsLimit = 15
operation.recordFetchedBlock = recordFetchBlock
operation.queryCompletionBlock = { [weak self] (cursor:CKQueryCursor!, error:NSError!) in
if cursor != nil {
self!.lastCursor = cursor
}
dispatch_async(dispatch_get_main_queue(), { () -> Void in
Misc.hideLoadingInView(view: self!.view)
self!.tableView.reloadData()
self!.refreshControl.endRefreshing()
if error != nil {
Misc.showErrorInView(view: self!.view, message: error.localizedDescription)
}
})
}
CloudKit.sharedInstance.publicDB.addOperation(operation)
recordFetchBlock所做的只是将对象添加到表视图用作数据源的可变数组中。
我是 CloudKit 的新手,我很困惑这是设计使然(不是返回所有结果,而是返回一些随机结果)还是我做错了什么?