CloudKit not returning the most recent data

早过忘川 提交于 2019-12-18 14:52:49

问题


I am having this issue where I save something to the icloud using CloudKit but immediately fetching the results doesn't return the latest data inserted.

Example

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
                }
            }
        }

Result :

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

Am I missing something here guys?


回答1:


There is a delay between when a record is saved in CloudKit and when the indexes have been updated with values from that record.

When a CKModifyRecordsOperation completes successfully you are able to immediately fetch that record via its record identifier.

However, there is a delay while the record is added to the search indexes on the server and queries won't find that record immediately.

If you're using a CKQuery to back a view you'll want to keep a side table of records that have been modified locally and stitch those into the view until the query starts returning that record.



来源:https://stackoverflow.com/questions/26375113/cloudkit-not-returning-the-most-recent-data

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!