Допустим, последовательность событий go примерно такая
- У меня есть токен A для общей базы данных
- Записи создаются в общей базе данных
- I получить изменения и загрузить новые записи, получить токен B
- Я принял новую долю в той же зоне и базе данных
- Я беру новую запись (NEW_RE C) из CKShare.Metadata. и сохраняет его, но у меня нет нового токена
- Но теперь NEW_RE C удаляется участником
- Затем я выбираю новые изменения для зоны и использую токен B, но CK не даст мне знать, NEW_RE C удалено
Я проверил это с помощью панели инструментов, поэтому это не имеет никакого отношения к моему коду.
Это преднамеренно? Я думаю, что алгоритм предназначен для такой работы, потому что он думает, что с точки зрения токена B, NEW_RE C никогда не существовало? Так зачем говорить клиенту, что он удален?
Но это не учитывает, что новая запись получена из метаданных. Я также удивляюсь тому же случаю, если вы использовали CKQuery для получения новых записей, без использования CKFetchRecordZoneChangesOperation, вы страдаете от той же проблемы?