发行更新CKRecord

Mat*_*c99 1 ios swift cloudkit ckrecord

我无法保存已保存的记录。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)
    }
})
Run Code Online (Sandbox Code Playgroud)

小智 5

您无法插入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)
    }
}
Run Code Online (Sandbox Code Playgroud)