2017-02-06 12 views
5

Так что в IOS 9 можно было сделать это:Укажите Predicate CKDatabaseSubscription и опционов

let subscription = CKQuerySubscription(recordType: "SomeType", predicate: somePredicate, subscriptionID: someSubscriptionID, options: [.firesOnRecordCreation, .firesOnRecordDeletion]) 
    subscription.notificationInfo = ... 
    publicDatabase.save(subscription) { (savedSubscription, error) in } 

Однако теперь Swift 3, CKQuerySubscription устаревшим и CKDatabaseSubscription рекомендуется для общей базы данных. У меня есть следующий код:

let subscription = CKDatabaseSubscription(subscriptionID: someSubscriptionID) 
    subscription.recordType = "SomeType" 
    publicDatabase.save(subscription) { (savedSubscription, error) in } 

Проблема заключается в том, что я не вижу, как можно указать предикат и параметры подписки, используя этот метод. Кто-нибудь, пожалуйста, помогите.

+0

['CKQuerySubscription'] (https://developer.apple.com/reference/cloudkit/ckquerysubscription) ** еще не устарел. ** Вы все еще можете использовать его. –

+0

Мой плохой я имел в виду CKS подписку. А также CKQuerySubscription не позволяет использовать общие базы данных. –

+1

Как я вижу, если вы владеете, вы все равно можете делать 'CKQuerySubscription' в своей частной базе данных. Но для участника вы должны использовать 'CKDatabaseSubscription', и у него нет предиката (пока?). – paiv

ответ

2

CKQueryПодписка не устарела 100%. Но его область изменена

Для общедоступной базы данных по умолчанию & Частная база данных По умолчанию используется зона CKQuerySubscription для получения уведомления.

Существует 2 шага для общей базы данных & Частная пользовательская зона базы данных.

Шаг 1: CKDatabaseSubscription для частного & Общая база данных.

Первый шаг позволит вам добавить зону, обновить зону или удалить уведомления о зоне для частного & общая база данных.

Шаг 2: Получить все пользовательские зоны из общей базы данных & Личная база данных. И создайте CKRecordZoneSubscription для каждой зоны.

Примечание: CKQuerySubscription не работает для общей базы данных, но она будет работать в частной зоне пользовательской базы данных, где вы можете добавить предикат & вариантов уведомлений.

Поскольку мы создали CKDatabaseSubscription на шаге 1. Если есть какие-либо добавления или изменения или удаления зоны, пока мы выбираем пользовательские зоны из Private & Общая база данных. Вы получите уведомление.

Если тип уведомления является .database, то на основе идентификатора подписки извлекают все зоны из общей или частной базы данных.

Если тип уведомления является .recordZone, то получите идентификатор зоны и извлечение записи с использованием ранее сохраненного маркера замены сервера.

 Смежные вопросы

  • Нет связанных вопросов^_^