CloudKit不会返回最新的数据

我遇到这个问题,我使用CloudKit将某些内容保存到icloud,但是立即读取结果不会返回插入的最新数据。

let todoRecord = CKRecord(recordType: "Todos") todoRecord.setValue(todo, forKey: "todotext") publicDB.saveRecord(todoRecord, completionHandler: { (record, error) -> Void in NSLog("Saved in cloudkit") let predicate = NSPredicate(value: true) let query = CKQuery(recordType: "Todos", predicate: predicate) self.publicDB.performQuery(query, inZoneWithID: nil) { results, error in if error != nil { dispatch_async(dispatch_get_main_queue()) { self.delegate?.errorUpdating(error) return } } else { NSLog("###### fetch after save : \(results.count)") dispatch_async(dispatch_get_main_queue()) { self.delegate?.modelUpdated() return } } } 

结果:

 Before saving in cloud kit : 3 CloudKit[22799:882643] Saved in cloudkit CloudKit[22799:882643] ###### Count after save : 3 

我在这里错过了什么家伙?

从CloudKit中保存logging到使用该logging中的值更新索引之间有一段延迟。

CKModifyRecordsOperation成功完成时,您可以通过其logging标识符立即获取该logging。

但是,logging添加到服务器上的search索引时会出现延迟,查询将不会立即find该logging。

如果您使用CKQuery来备份视图,则需要保留本地修改的logging的旁边表格,并将其CKQuery到视图中,直到查询开始返回该logging。