CKDatabase
A CKDatabase объект является кабелепроводом для доступа к общедоступным и частным данным контейнера приложения. Каждый контейнер имеет общедоступную базу данных, данные которой доступны для всех пользователей и частной базы данных, данные которой доступны только для текущего пользователя по умолчанию. Объект базы данных берет запросы на данные и применяет их к надлежащей части контейнера.
Вы не создаете объекты базы данных сами, и при этом Вы не должны разделять на подклассы CKDatabase. Ваше приложение CKContainer объекты обеспечивают объекты базы данных, которые Вы используете для доступа к связанным данным. Используйте объекты базы данных как есть для выполнения операций на данных.
Общедоступная база данных всегда доступна, независимо от того, имеет ли устройство активную учетную запись iCloud. Когда никакая учетная запись iCloud не доступна, Ваше приложение может выбрать записи и выполнить запросы на общедоступной базе данных, но это может не сохранить изменения. (Сохраняющие записи на общедоступную базу данных требуют, чтобы активная учетная запись iCloud идентифицировала владельца тех записей.) Доступ к частной базе данных всегда требует активной учетной записи iCloud на устройстве.
Взаимодействие с объектами базы данных
Вы взаимодействуете с объектами базы данных следующим образом:
Присвойте объект базы данных объекту операции, когда Вы захотите выбрать, сохранить, удалить и запросить содержание базы данных. Объект базы данных говорит объект операции, где получить данные. (Вызов
addOperation:метод базы данных присваивает ту базу данных объекту операции неявно.Используйте удобные методы объекта базы данных выбрать, сохранить, удалить, и запросить содержание базы данных непосредственно. Удобные методы действуют только на один элемент за один раз.
Используя базы данных с объектами операции
Для объектов операции то убывание от CKDatabaseOperation класс, укажите объект базы данных для использования при выполнении работы.
При выполнении операций на собственной очереди укажите базу данных явно путем присвоения надлежащего
CKDatabaseвозразите против объекта операцииdatabaseсвойство.Если у Вас нет своей собственной очереди, выполните объект операции против базы данных неявно путем вызова
addOperation:метод.
Выполнение задач против базы данных непосредственно
CKDatabase класс предлагает удобные методы для доступа к записям, рекордным зонам и подпискам без объекта операции. Удобные методы позволяют Вам выбирать, сохранять, или удалять единственный элемент асинхронно и обрабатывать результаты на фоновом потоке. Существует также удобный метод искать записи в базе данных.
Оператор импорта
Swift
import CloudKit
Objective C
@import CloudKit;
Доступность
Доступный в OS X v10.10 и позже.
-
Ищет указанную зону асинхронно записи, соответствующие параметры запроса.
Объявление
Swift
func performQuery(_query: CKQuery!, inZoneWithIDzoneID: CKRecordZoneID!, completionHandlercompletionHandler: (([AnyObject]!, NSError!) -> Void)!)Objective C
- (void)performQuery:(CKQuery *)queryinZoneWithID:(CKRecordZoneID *)zoneIDcompletionHandler:(void (^)(NSArray *results, NSError *error))completionHandlerПараметры
queryОбъект запроса, содержащий параметры для поиска. Если этот параметр, этот метод выдает исключение
nil. Для получения информации о том, как создать запросы, см. Ссылку класса CKQuery.zoneIDID зоны для поиска. Результаты поиска ограничиваются записями в указанной зоне. Указать
nilискать зону по умолчанию базы данных.completionHandlerБлок для выполнения с результатами поиска. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
resultsМассив, содержащий нуль или больше
CKRecordобъекты. Возвращенные записи соответствуют записям в указанной зоне, соответствующим параметры запроса.errorОшибочный объект, или
nilесли запрос был завершен успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для выполнения поисков против текущей базы данных.
Не используйте этот метод, когда число возвращенных записей будет потенциально больше чем несколькими сотнями записей. Для эффективности все запросы автоматически ограничивают число возвращенных записей на основе существующих условий. Если Ваш запрос поражает максимальное значение, этот метод возвращает только первую часть полных результатов. Число возвращенных записей должно быть достаточным в большинстве случаев, но получить весь набор записей необходимо использовать a
CKQueryOperationобъект вместо этого. Операции запроса также возвращают максимальное количество результатов, но когда они делают, они обеспечивают, курсор возражают, что можно использовать для выборки следующего пакета результатов.Можно искать любое содержание, представленное a
CKRecordобъект, включая пользовательские записи. Вы не можете использовать этот метод для поискаCKSubscriptionилиCKRecordZoneобъекты.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выполняет указанную работу асинхронно против текущей базы данных.
Объявление
Swift
func addOperation(_operation: CKDatabaseOperation!)Objective C
- (void)addOperation:(CKDatabaseOperation *)operationПараметры
operationОбъект операции для выполнения. Необходимо сконфигурировать объект операции с любыми зависимостями и обработчиками завершения прежде, чем вызвать этот метод. Для операций, включающих записи, все записи, действующий на объектом операции, должны находиться в той же зоне. Если этот параметр
nil, метод ничего не делает.Обсуждение
Не изменяйте свойства объекта операции после вызова этого метода. До выполнения работы этот метод устанавливает объект операции
databaseсвойство к текущей базе данных, заменяя любую ранее присвоенную базу данных.Этот метод выполняет объект операции с приоритетом, который Вы присвоили объекту через
queuePriorityсвойство.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выборки одна запись асинхронно от текущей базы данных.
Объявление
Swift
func fetchRecordWithID(_recordID: CKRecordID!, completionHandlercompletionHandler: ((CKRecord!, NSError!) -> Void)!)Objective C
- (void)fetchRecordWithID:(CKRecordID *)recordIDcompletionHandler:(void (^)(CKRecord *record, NSError *error))completionHandlerПараметры
recordIDID записи Вы хотите выбрать. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
recordТребуемый рекордный объект. Если никакая такая запись не найдена, этот параметр
nil.errorОшибочный объект, или
nilесли запись была выбрана успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для выборки записей, которые не являются срочными к выполнению приложения. Этот метод выбирает запись с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для выборки записей более срочно создайте a
CKFetchRecordsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для выборки многократных записей одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Сохраняет одну запись асинхронно на текущую базу данных.
Объявление
Параметры
recordЗапись для сохранения. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
recordРекордный объект Вы попытались сохранить.
errorОшибочный объект, или
nilесли запись была сохранена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Этот метод сохраняет запись, только если это никогда не сохранялось прежде или если это является более новым, чем версия на сервере. Вы не можете использовать этот метод для перезаписи более новых версий записи на сервере.
Этот метод сохраняет запись с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для сохранения записей более срочно создайте a
CKModifyRecordsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для сохранения многократных записей одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Удаляет указанную запись асинхронно из текущей базы данных.
Объявление
Swift
func deleteRecordWithID(_recordID: CKRecordID!, completionHandlercompletionHandler: ((CKRecordID!, NSError!) -> Void)!)Objective C
- (void)deleteRecordWithID:(CKRecordID *)recordIDcompletionHandler:(void (^)(CKRecordID *recordID, NSError *error))completionHandlerПараметры
recordIDID записи Вы хотите удалить. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
recordIDID записи Вы попытались удалить.
errorОшибочный объект, или
nilесли запись была удалена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Если на запись сослались другие записи, удаление записи может инициировать дополнительные удаления. Этот метод сообщает только о ID записи, которую Вы попросили удалять. CloudKit не сообщает об удалениях, инициированных путем владения отношениями между записями.
Этот метод удаляет запись с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для удаления записей более срочно создайте a
CKModifyRecordsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для удаления многократных записей одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выборки все рекордные зоны асинхронно от текущей базы данных.
Объявление
Swift
func fetchAllRecordZonesWithCompletionHandler(_completionHandler: (([AnyObject]!, NSError!) -> Void)!)Параметры
completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
zonesМассив
CKRecordZoneобъекты. Возвращенный массив всегда содержит по крайней мере одну рекордную зону, соответствующую зоне по умолчанию.errorОшибочный объект, или
nilесли рекордные зоны были выбраны успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для определения местоположения рекордных зон в этой базе данных. Рекордные зоны представляют группы записей с общей целью.
Этот метод выбирает рекордные зоны с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для выборки рекордных зон более срочно создайте a
CKFetchRecordZonesOperationобъект с желаемым приоритетом.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выборки одна рекордная зона асинхронно от текущей базы данных.
Объявление
Swift
func fetchRecordZoneWithID(_zoneID: CKRecordZoneID!, completionHandlercompletionHandler: ((CKRecordZone!, NSError!) -> Void)!)Objective C
- (void)fetchRecordZoneWithID:(CKRecordZoneID *)zoneIDcompletionHandler:(void (^)(CKRecordZone *zone, NSError *error))completionHandlerПараметры
zoneIDID рекордной зоны. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
zoneТребуемый
CKRecordZoneобъект илиnilесли объект не найден или не может быть получен.errorОшибочный объект, или
nilесли рекордная зона была выбрана успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для получения рекордной зоны, ID которой Вы уже знаете. Вы могли бы получить рекордный зональный объект так, чтобы можно было оценить его возможности.
Этот метод выбирает рекордную зону с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для выборки рекордной зоны более срочно создайте a
CKFetchRecordZonesOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для выборки многократных рекордных зон одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Сохраняет одну рекордную зону асинхронно к текущей базе данных.
Объявление
Swift
func saveRecordZone(_zone: CKRecordZone!, completionHandlercompletionHandler: ((CKRecordZone!, NSError!) -> Void)!)Objective C
- (void)saveRecordZone:(CKRecordZone *)zonecompletionHandler:(void (^)(CKRecordZone *zone, NSError *error))completionHandlerПараметры
zoneЗона Вы хотите сохранить к базе данных. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
zoneCKRecordZoneвозразите, что Вы попытались сохранить.errorОшибочный объект, или
nilесли рекордная зона была сохранена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для сохранения рекордной зоны к базе данных так, чтобы можно было впоследствии сохранить записи в нем. Рекордные зоны должны быть сохранены, прежде чем Вы попытаетесь сохранить любые записи, находящиеся в той зоне. Поскольку этот метод выполняется асинхронно, используйте обработчик завершения, чтобы проверить, что зона была сохранена успешно прежде, чем попытаться сохранить любые записи.
Этот метод сохраняет рекордную зону с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для сохранения рекордной зоны более срочно создайте a
CKModifyRecordZonesOperationобъект с приоритетом Вы хотите. Можно также использовать тот объект операции для сохранения многократных рекордных зон одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Удаляет одну рекордную зону (и ее содержание) асинхронно от текущей базы данных.
Объявление
Swift
func deleteRecordZoneWithID(_zoneID: CKRecordZoneID!, completionHandlercompletionHandler: ((CKRecordZoneID!, NSError!) -> Void)!)Objective C
- (void)deleteRecordZoneWithID:(CKRecordZoneID *)zoneIDcompletionHandler:(void (^)(CKRecordZoneID *zoneID, NSError *error))completionHandlerПараметры
zoneIDID зоны Вы хотите удалить. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
zoneIDID зоны, которую Вы попытались удалить.
errorОшибочный объект, или
nilесли рекордная зона была удалена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Удаление зоны постоянно удаляет зону и все записи в той зоне. После удаления зоны можно использовать тот же ID для создания новой пустой зоны.
Этот метод удаляет рекордную зону с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для удаления рекордной зоны более срочно создайте a
CKModifyRecordZonesOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для удаления многократных рекордных зон одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выборки вся подписка возражают асинхронно от текущей базы данных.
Объявление
Swift
func fetchAllSubscriptionsWithCompletionHandler(_completionHandler: (([AnyObject]!, NSError!) -> Void)!)Параметры
completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
subscriptionsМассив
CKSubscriptionобъекты. Если объекты подписки не могут быть получены, массив пуст.errorОшибочный объект, или
nilесли подписки были выбраны успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для определения местоположения подписок в текущей базе данных. Подписки представляют персистентные запросы на сервере. Когда записи изменяются, подписка может использоваться для предупреждения приложения.
Этот метод выбирает объекты подписки с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для выборки подписок более срочно создайте a
CKFetchSubscriptionsOperationобъект с желаемым приоритетом.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Выборки одна подписка возражают асинхронно от текущей базы данных.
Объявление
Swift
func fetchSubscriptionWithID(_subscriptionID: String!, completionHandlercompletionHandler: ((CKSubscription!, NSError!) -> Void)!)Objective C
- (void)fetchSubscriptionWithID:(NSString *)subscriptionIDcompletionHandler:(void (^)(CKSubscription *subscription, NSError *error))completionHandlerПараметры
subscriptionIDID объекта подписки. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
subscriptionТребуемая подписка возражает или
nilесли объект не найден или не может быть получен.errorОшибочный объект, или
nilесли подписка была выбрана успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для получения объекта подписки, ID которого Вы уже знаете. Вы могли бы получить объект подписки так, чтобы можно было оценить его атрибуты или обновить информацию об уведомлении, используемую для генерации предупреждений.
Этот метод выбирает объект подписки с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для выборки подписки более срочно создайте a
CKFetchSubscriptionsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для выборки многократных объектов подписки одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Сохраняет один объект подписки асинхронно к текущей базе данных.
Объявление
Swift
func saveSubscription(_subscription: CKSubscription!, completionHandlercompletionHandler: ((CKSubscription!, NSError!) -> Void)!)Objective C
- (void)saveSubscription:(CKSubscription *)subscriptioncompletionHandler:(void (^)(CKSubscription *subscription, NSError *error))completionHandlerПараметры
subscriptionОбъект подписки Вы хотите сохранить к базе данных. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
subscriptionОбъект подписки Вы попытались сохранить.
errorОшибочный объект, или
nilесли подписка была сохранена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Используйте этот метод для сохранения подписки к базе данных так, чтобы это могло начать наблюдать за изменениями.
Этот метод сохраняет объект подписки с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для сохранения подписки более срочно создайте a
CKModifySubscriptionsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для сохранения многократных объектов подписки одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
-
Удалите один объект подписки асинхронно из текущей базы данных.
Объявление
Параметры
subscriptionIDID подписки возражает для удаления. Если этот параметр, этот метод выдает исключение
nil.completionHandlerБлок для выполнения с результатами. Ваш блок должен быть способен к работе любого потока приложения и взять следующие параметры:
subscriptionIDID подписки возражает, что Вы попытались удалить.
errorОшибочный объект, или
nilесли подписка была удалена успешно. Используйте информацию в ошибочном объекте определить, имеет ли проблема обходное решение.Обсуждение
Удаление подписки мешает ему наблюдать ее измененные записи и отправить предупреждения.
Этот метод удаляет объект подписки с низким приоритетом, который может вызвать задачу выполниться после задач более высокого приоритета. Для удаления подписки более срочно создайте a
CKModifySubscriptionsOperationобъект с желаемым приоритетом. Можно также использовать тот объект операции для удаления многократных объектов подписки одновременно.Оператор импорта
Objective C
@import CloudKit;Swift
import CloudKitДоступность
Доступный в OS X v10.10 и позже.
