保存后读取 CloudKit 条记录

Reading CloudKit records after saving it

我使用 - (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; 获取该类型的所有记录。但是在这个查询的结果中没有我之前添加的记录。

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

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

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