gpt4 book ai didi

swift - 使用 cloudkit ckqueryoperation 批量获取

转载 作者:行者123 更新时间:2023-11-28 12:08:40 26 4
gpt4 key购买 nike

是否可以在 cloudkit 中实现“批量获取”,以便我可以调用一个方法来提取下一个 X 记录?目前,根据CloudKit Batch Fetches? cloudkit 隐式处理这个问题,但我想以某种方式创建一个方法,允许我每次提取指定数量的查询。这是我到目前为止所拥有的:(其中 continuePullPosts 是与我发布的方法类似的方法)

queryOP.recordFetchedBlock = { record in
//do stuff here
annotations.append(postToAdd)
}

queryOP.queryCompletionBlock = { [unowned self] (cursor, error) in
DispatchQueue.main.async {
if error == nil {
if completionHandler(annotations) {
if cursor != nil {
let newQueryOP = CKQueryOperation(cursor: cursor!)
self.continuePullPosts(curLocation: curLocation, queryOP: newQueryOP,
annotations: annotations, completionHandler: completionHandler)
}
}
} else {
print(error)
print("could not pull posts")
}
}
}

queryOP.resultsLimit = CKQueryOperationMaximumResults
CKContainer.default().publicCloudDatabase.add(queryOP)
}

最佳答案

您应该设置 result limit使用您想要的值而不是 CKQueryOperationMaximumResults 常量值。

我的建议是为 CKRecord 结果和 CKQueryCursor 定义一个带有参数的完成处理程序。必须在 CKQueryOperation 的 queryCompletionBlock 处理程序中调用此完成处理程序。

调用处理程序后,您可以处理结果,如果游标不为空,则意味着有更多结果要获取。

可能是这样的

// Completion Handler (closure) definition
public typealias YourFetchCompletionHandler = (_ records: [CKRecords]?, cursor: CKQueryCursor?) -> (Void)

这里是获取记录的函数

public func fetchYourRecords(_ cursor: CKQueryCursor? = nil, completionHandler handler: @escaping YourFetchCompletionHandler) -> Void
{
var result: [CKRecord] = [CKRecord]()

let queryOP: CKQueryOperation

if let cursor = cursor
{
// Operation to fetch another 10 records.
queryOP = CKQueryOperation(cursor: cursor)
}
else
{
// Create the operation for the first time
queryOP = CKQueryCursor(query:...)
}

queryOp.recordFetchedBlock = { (record: CKRecord) -> Void in
result.append(record)
}

queryOP.queryCompletionBlock = { [unowned self] (cursor, error) in
handler(result, cursor)
}

// Fetch only 10 records
queryOP.resultsLimit = 10
CKContainer.default().publicCloudDatabase.add(queryOP)
}

调用此函数后,您可以将闭包中返回的游标保存在一个变量中,如果它不为零,则再次调用该函数以恢复接下来的 10 条记录。

关于swift - 使用 cloudkit ckqueryoperation 批量获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48965667/

26 4 0
文章推荐: javascript - 这个 bool 表达式如何计算?
文章推荐: 内带有 SVG 的 CSS 选择器特异性