gpt4 book ai didi

swift - CloudKit - 每次运行相同的查询时,CKQueryOperation 结果都不同

转载 作者:行者123 更新时间:2023-11-28 07:04:29 25 4
gpt4 key购买 nike

情况是这样的——我正在使用一个简单的 UITableView 来呈现来自 CloudKit publicDB 的记录。当我运行该应用程序时,查询操作返回例如返回 2 个结果(目前只有这些结果)。

我的 TableView 有一个刷新控件,当我拉动刷新时,我得到的结果为零,如果我继续重新加载,最终可能会出现结果,但现在总是。

同样的事情也发生在更多的结果上,我曾经查询过 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 所做的就是将对象添加到 TableView 用作数据源的可变数组。

我是 CloudKit 的新手,我很困惑这是设计使然(不是返回所有结果而是随机返回一些结果)还是我做错了什么?

最佳答案

我看到您正在使用光标。因此,第二次通话将从第一次通话结束的地方开始。您的 resultsLimit 为 15。使用游标时,如果记录超过 15 条,您将仅在第二次执行查询时收到记录。要测试这是否是问题,只需注释掉设置光标的行:operation = CKQueryOperation(cursor: lastCursor)

关于swift - CloudKit - 每次运行相同的查询时,CKQueryOperation 结果都不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31132259/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com