Ios CloudKit保存记录完成

Ios CloudKit保存记录完成,ios,swift,icloud,cloudkit,ckquery,Ios,Swift,Icloud,Cloudkit,Ckquery,我正在使用下面的代码更新记录。一旦记录被更新,我想运行我的刷新功能。此时,刷新函数有时在更新记录之前被调用,因此刷新结果与更新记录之前相同 谢谢 var tempDocumentsArray:NSArray! let recordID = CKRecordID(recordName: "layerAbove") var predicate = NSPredicate(format: "recordID = %@", recordID) let query = CKQuery(recordType

我正在使用下面的代码更新记录。一旦记录被更新,我想运行我的刷新功能。此时,刷新函数有时在更新记录之前被调用,因此刷新结果与更新记录之前相同

谢谢

var tempDocumentsArray:NSArray!
let recordID = CKRecordID(recordName: "layerAbove")
var predicate = NSPredicate(format: "recordID = %@", recordID)
let query = CKQuery(recordType: "Layers", predicate: predicate)
self.publicDB.performQuery(query, inZoneWithID: nil) { (results, error) -> Void in
tempDocumentsArray = results
print("Results are: \(tempDocumentsArray)")
let record = tempDocumentsArray[0] as! CKRecord

var layerAbovePrevPos = record.objectForKey("layerNumber") as! Int
layerAbovePrevPos = layerAbovePrevPos - 1
let nlnChanged = record.setObject(layerAbovePrevPos, forKey: "layerNumber")

self.publicDB.saveRecord(record, completionHandler: { (returnRecord, error) -> Void in
    if let err = error {
        print("Error: \(err.localizedDescription)")
    } else {
        dispatch_async(dispatch_get_main_queue()) {
            print("Success")


            //TODO:This is sometimes called before the save is complete!
            self.resetAndGet()


        }
    }
})
}

保存后,是否再次读取记录?您不能改用更新的记录(returnRecord)吗?这将为您节省一个CloudKit获取操作。您确定该错误不在resetAndGet方法中吗?在某些情况下,需要使用resetAndGet获取多条记录。此外,如果在记录保存几秒钟后通过点击按钮调用该方法,则该方法也能正常工作。保存后,是否再次读取该记录?您不能改用更新的记录(returnRecord)吗?这将为您节省一个CloudKit获取操作。您确定该错误不在resetAndGet方法中吗?在某些情况下,需要使用resetAndGet获取多条记录。此外,如果在记录保存几秒钟后通过点击按钮调用该方法,则该方法也能正常工作。