保存后读取 CloudKit 记录

Posted

技术标签:

【中文标题】保存后读取 CloudKit 记录【英文标题】:Reading CloudKit records after saving it 【发布时间】:2015-09-13 18:41:21 【问题描述】:

我使用- (void)saveRecord:(CKRecord *)record completionHandler:(void (^)(CKRecord *record, NSError *error))completionHandler; 函数创建了一条 CloudKit 记录。

然后我在 saveRecord 的 completionHandler 中使用 - (void)performQuery:(CKQuery *)query inZoneWithID:(CKRecordZoneID *)zoneID completionHandler:(void (^)(NSArray /* CKRecord */ *results, NSError *error))completionHandler; 获取所有此类记录。但是在这个查询的结果中,没有我之前添加的记录。

然后,当我在一段时间后再次执行查询时,我拥有所有记录,包括我刚刚添加的记录。我现在怎么知道我刚刚添加的记录已经在数据库中了。它不应该已经在完成处理程序中可用吗?

【问题讨论】:

【参考方案1】:

没有理由在完成处理程序中查询已保存的记录。 saveRecord:completionHandler: 的完成处理程序在成功时为您提供保存的记录,否则为您提供错误。

顺便说一句 - 查询失败的原因是因为你做得太早了。上传和索引保存的记录需要一点时间。这就是为什么您需要使用完成处理程序的参数而不是这么快执行查询的原因。

【讨论】:

以上是关于保存后读取 CloudKit 记录的主要内容,如果未能解决你的问题,请参考以下文章

即使正确设置了所有权限,Cloudkit 也会不断给出创建权限错误

记录未保存 Cloudkit

SWIFT/CloudKit - 更新记录并将其保存回容器

CloudKit 记录保存进度

CloudKit:使用 CKModifyRecordsOperation 保存记录时出错

将记录保存到 CloudKit 时应用程序崩溃