2016-05-31 54 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