CloudKit и CKSubscriptions

Я решаю очень странную проблему с CloudKit и push-уведомлениями, предоставляемыми Apple с помощью CKSubscriptions.

Во-первых, все работает нормально, я могу получать CKNotification, это работало несколько дней, пока я не внес некоторые изменения в схему разработки, я просто добавил новое поле, больше ничего, ничего странного.

С этого момента я не могу получать CKNotifications. Я точно уверен, что не допустил ошибок в коде, потому что не менял его. Я только добавил новое поле в свою схему из Cloud Dashboard.

Я один решаю этот вопрос? Вы знаете, существует ли исправление?

Спасибо.

ОБНОВЛЕНИЕ: если поле «список», которое является CKReference, если установлено действие DeleteSelf, уведомление не сработает, если действие «Нет», уведомление сработает. Кстати, мне нужен DeleteSelf.


person Progeny    schedule 30.04.2015    source источник
comment
Не могли бы вы попробовать удалить подписку и создать ее снова? После смены модели вам часто приходится это делать.   -  person Edwin Vermeer    schedule 30.04.2015
comment
ОБНОВЛЕНИЕ: если список полей, который является CKReference, имеет действие DeleteSelf, уведомление не будет срабатывать, если действие равно None, уведомление срабатывает. Кстати, мне нужен DeleteSelf для согласованности   -  person Progeny    schedule 30.04.2015


Ответы (1)


РЕШЕНО:

Ошибка заключалась в том, что CKSubscription срабатывал по пути:

let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.None)                    
let predicate = NSPredicate(format: "%K == %@", "list", listReference)
                let itemsSubscription = CKSubscription(recordType: "Items", predicate: predicate, subscriptionID: "ITEMS", options: CKSubscriptionOptions.FiresOnRecordCreation | CKSubscriptionOptions.FiresOnRecordUpdate | CKSubscriptionOptions.FiresOnRecordDeletion)

но эталонное действие теперь DeleteSelf

поэтому меняю на

let listReference = CKReference(recordID: r.recordID, action: CKReferenceAction.DeleteSelf) 

будет делать свое дело.

Теперь работает нормально.

person Progeny    schedule 30.04.2015