Использование выборки с RecordID (ниже) позволит вам получить самую последнюю запись:
func fetch(withRecordID recordID: CKRecord.ID,
completionHandler: @escaping (CKRecord?, Error?) -> Void)
Если вы хотите получить ее, а затем обновить свойство и сохранить, вам нужно сделать что-то вроде:
Получить запись из cloudkit
CKContainer.default().publicCloudDatabase.fetch(withRecordID: user.id!) { updatedRecord, error in
Затем установите новый массив для ключа и типа ключа, который я сохраняю (где массив для пользователя - это то, что я обновил, и 'keyType' имя поля записи CK)
updatedRecord!.setObject(arrayForUser as __CKRecordObjCValue?, forKey: keyType)
Затем выполните вызов сохранения, передав обновленную запись:
CKContainer.default().publicCloudDatabase.save(updatedRecord!) { savedRecord, error in