2016-08-27 3 views
0

Я пытаюсь подписаться на изменения iCloud, но продолжаю получать internal sever error. Сохранение и удаление данных из iCloud работает, но я не могу получить и не сохранять подписки.Ошибка локального сервера CloudKit

Кто-нибудь знает, в чем проблема?

ответ

0

Я нашел проблему. CloudKit очень плохо документирован, когда дело доходит до ошибок. Похоже, вы получаете внутреннюю ошибку сервера при попытке подписаться на изменения записи, используя тип записи, который еще не существует. Странно, надеюсь, что это поможет кому-то в будущем!

0

Я также заметил, что после того, как вы столкнулись с ошибкой, последующие вызовы CloudKit, похоже, терпят неудачу. Возможно, это нормальное поведение iOS, и мне нужно сбросить код ошибки, если он будет установлен. Может быть, кто-то может прокомментировать.

0

У меня были правильные подписки, пока я не добавил идентификатор подписки. Затем я начал получать «Внутреннюю ошибку сервера». Я использовал функцию:

let subscription = CKQuerySubscription(recordType: kActionFigureSpecificsRecord, 
    predicate: predicate, 
    subscriptionID: subscriptionId, 
    options: [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion]) 

SubscriptionId Уникальное имя подписки. Эта строка должна быть уникальной в указанной базе данных и не должна быть нулевой.

После прочтения документации я понял, что идентификатор подписки должен быть уникальным, хотя документация не была особенно ясна относительно уникального относительно того. Я считаю, что уникальные критерии относятся к другим идентификаторам ID базы данных, таким как другое recordID.recordName. У меня была строка моего подписчика с тем же значением, что и recordID.recordName для таблицы, на которой подписка действовала для соответствующей записи. Когда я добавлял _Subscription к строке подписчика (т. Е. Имя), подписка была зарегистрирована в порядке.

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