2016-05-31 101 views
1

我无法保存已保存的记录。 recordToSave是从服务器下载的CKRecord。有没有可能更新它?问题更新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) 
    } 
}) 
+1

我们需要更多的细节。 print(error.debugDescription)输出是什么?如果这不起作用,请尝试“打印(错误)”。另外,你如何创建/检索'recordTosave'? – breakingobstacles

回答

2

您无法插入已存在于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) 
    } 
} 
+0

不幸的是,它给了我一个错误:可选()。 – MatejKalc99

+0

我发现错误,无论如何感谢Kiruthika。你的代码是正确的。 – MatejKalc99