Есть ли у кого-нибудь опыт использования опции CloudKit
для DeleteSelf
для CKReference
? Вот что я получил из документов:
Удалить себя
Действие удаления для записей, на которые есть ссылки. При удалении записи также удаляются все записи, содержащие объекты CKReference, которые указывают на эту запись. Удаление дополнительных записей может привести к каскадному удалению большего количества записей. Удаление является асинхронным в зоне по умолчанию и немедленным в пользовательской зоне.
Итак, я тестировал это, я создал несколько объектов CKReference
как с помощью CloudKit Dashboard
, так и с помощью моего приложения. Всякий раз, когда я делаю это со своим приложением, я создаю ссылку следующим образом:
let reference:CKReference = CKReference(recordID: savedFriend.friendID, action: CKReferenceAction.DeleteSelf)
Я знаю, что ему назначено самоудаление, потому что на панели управления он показывает, что опция отключена: < img src="https://i.stack.imgur.com/cpEw1.png" alt="удалить самостоятельную галочку">
Должно быть, я что-то делаю неправильно, потому что всякий раз, когда я иду и вручную удаляю запись, на которую есть ссылка с помощью панели инструментов, или настраиваю свое приложение на ее удаление программно, запись исчезает, но ссылка никогда не удаляется. Я подумал, что, может быть, мне следует просто подождать, и в конце концов это произойдет, но несколько часов спустя он все еще отмечен галочкой, как будто он должен был удалить себя. Это немного расстраивает, потому что я разработал часть своего кода, предполагая, что это будет работать, теперь у меня может быть приложение, которое тратит ресурсы впустую, пытаясь найти CKRecord
, которого больше не существует. Должен ли я просто не полагаться на то, что это когда-либо сработает? Я ценю любую помощь или совет, который я могу получить.
ОБНОВЛЕНИЕ ~ 07.04.2016
Я поторопился, вернувшись сюда и опубликовав сообщение о том, что проблема решилась сама собой. Я не был полностью уверен, что проблема не появится снова, поэтому прошлой ночью я искал утешения. Я создал 5 разных CKRecords
и создал разные CKReference
объекты, чтобы ссылаться на них в своей базе данных. Затем я приступил к установке параметра CKReferenceAction.DeleteSelf
для каждой ссылки (я попробовал два вручную через панель инструментов, а три других сделал программно). В любом случае, я подождал несколько минут, а затем удалил записи, на которые есть ссылки... через десять минут все ссылки все еще присутствовали. Я подождал еще 5-10 минут, а они все еще были там, поэтому я пошел спать, предполагая, что к утру они точно должны исчезнуть, верно? Неправильный! Двенадцать часов спустя записи CKReference
все еще существуют, а записи, на которые есть ссылки, все еще отсутствуют. Я точно ломаю голову, похоже, это баг с CloudKit
. Я должен упомянуть, что я также заметил некоторое странное поведение в моей приборной панели. В течение последних четырех или около того дней внизу в левом нижнем углу постоянно говорилось, что это «Переиндексация данных разработки», вот, например, картинка:
Может ли это быть причиной этой проблемы? Кто-нибудь знаком с этой проблемой и знает способ решить эту проблему? Мы ценим любые предложения. Я подал отчет об ошибке в Apple.