发布更新 CKRecord
Posted
技术标签:
【中文标题】发布更新 CKRecord【英文标题】:Issue update a CKRecord 【发布时间】:2016-05-31 17:01:31 【问题描述】:我无法保存已保存的记录。 recordToSave 是从服务器下载的 CKRecord。是否可以更新它?
recordTosave.setValue("cat", forKey: "animal")
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.saveRecord(recordToSave, completionHandler:(record: CKRecord?, error: NSError?) in
if error == nil
else
print(error.debugDescription)
)
【问题讨论】:
我们需要更多细节。print(error.debugDescription)
输出什么?如果这不起作用,请尝试print(error)
。另外,您如何创建/检索recordTosave
?
【参考方案1】:
您不能插入已存在于 cloudkit 中的记录。您可以使用 CKModifyRecordsOperation 修改记录。使用记录ID获取记录,然后通过修改操作进行更新。
let recordIDToSave = CKRecordID(recordName: "recordID")
let publicData = CKContainer.defaultContainer().publicCloudDatabase
publicData.fetchRecordWithID(recordIDToSave) (record, error) in
if let recordToSave = record
//Modify the record value here
recordToSave.setObject("value", forKey: "key")
let modifyRecords = CKModifyRecordsOperation(recordsToSave:[recordToSave], recordIDsToDelete: nil)
modifyRecords.savePolicy = CKRecordSavePolicy.AllKeys
modifyRecords.qualityOfService = NSQualityOfService.UserInitiated
modifyRecords.modifyRecordsCompletionBlock = savedRecords, deletedRecordIDs, error in
if error == nil
print("Modified")
else
print(error)
publicData.addOperation(modifyRecords)
else
print(error.debugDescription)
【讨论】:
不幸的是它给了我一个错误:Optional(以上是关于发布更新 CKRecord的主要内容,如果未能解决你的问题,请参考以下文章