У меня были правильные подписки, пока я не добавил идентификатор подписки. Затем я начал получать «Внутреннюю ошибку сервера». Я использовал функцию:
let subscription = CKQuerySubscription(recordType: kActionFigureSpecificsRecord,
predicate: predicate,
subscriptionID: subscriptionId,
options: [.firesOnRecordCreation, .firesOnRecordUpdate, .firesOnRecordDeletion])
SubscriptionId Уникальное имя подписки. Эта строка должна быть уникальной в указанной базе данных и не должна быть нулевой.
После прочтения документации я понял, что идентификатор подписки должен быть уникальным, хотя документация не была особенно ясна относительно уникального относительно того. Я считаю, что уникальные критерии относятся к другим идентификаторам ID базы данных, таким как другое recordID.recordName. У меня была строка моего подписчика с тем же значением, что и recordID.recordName для таблицы, на которой подписка действовала для соответствующей записи. Когда я добавлял _Subscription к строке подписчика (т. Е. Имя), подписка была зарегистрирована в порядке.