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获取多条记录。此外,如果在记录保存几秒钟后通过点击按钮调用该方法,则该方法也能正常工作。