База данных CloudKit генерирует новый токен изменения при каждой синхронизации - даже если никаких изменений не было - PullRequest
0 голосов
/ 01 мая 2019

Моя база данных CloudKit генерирует новый токен изменений каждый раз, когда я запрашиваю его об изменениях, даже если никаких изменений не было сделано.

Я рад опубликовать код, но не думаю, что это имеет отношение к вопросу, и я не хочу перегружать пост.Я публикую ниже некоторые результаты консоли, которые я использую для отладки, чтобы показать, что я сохраняю и использую токены, но база данных отправляет новые при каждой синхронизации.Как видите, я ничего не меняю в базе данных.Для справки: зона записи не каждый раз отправляет новые токены, только база данных.

Это ожидаемое поведение?Если нет, какие-либо мысли о том, почему / как это происходит?

? SyncOperation fires on Simulator, Private ?
☣️ FetchDatabaseChangesOperation fires ?
☣️ FetchDatabaseChangesOperation changeTokenUpdatedBlock
☣️ token used: <CKServerChangeToken: 0x7b04000029f0; data=AQAAAWpzvY7V>
☣️ server says: <CKServerChangeToken: 0x7b0400025330; data=AQAAAWpzvoVX>
☣️ saving token: <CKServerChangeToken: 0x7b0400001130; data=AQAAAWpzvoVX>
☣️ FetchDatabaseChangesOperation complete ?? ⏱0.26
? FetchRecordZoneChangesOperation no changes ??
? ModifyObjectsOperation - no changes ??
? UploadChangesOperation - no uploads ??
? ModifyObjectsOperation - no changes ??
? SyncOperation complete ?? ⏱0.28

☁️ ? Pull to refresh fires

? SyncOperation fires on Simulator, Private ?
☣️ FetchDatabaseChangesOperation fires ?
☣️ FetchDatabaseChangesOperation changeTokenUpdatedBlock
☣️ token used: <CKServerChangeToken: 0x7b0400001f50; data=AQAAAWpzvoVX>
☣️ server says: <CKServerChangeToken: 0x7b0400001e90; data=AQAAAWpzvopq>
☣️ saving token: <CKServerChangeToken: 0x7b0400025350; data=AQAAAWpzvopq>
☣️ FetchDatabaseChangesOperation complete ?? ⏱0.24
? FetchRecordZoneChangesOperation no changes ??
? ModifyObjectsOperation - no changes ??
? UploadChangesOperation - no uploads ??
? ModifyObjectsOperation - no changes ??
? SyncOperation complete ?? ⏱0.25

☁️ ? Pull to refresh fires

? SyncOperation fires on Simulator, Private ?
☣️ FetchDatabaseChangesOperation fires ?
☣️ FetchDatabaseChangesOperation changeTokenUpdatedBlock
☣️ token used: <CKServerChangeToken: 0x7b0400001f50; data=AQAAAWpzvopq>
☣️ server says: <CKServerChangeToken: 0x7b0400000d00; data=AQAAAWpzvo3P>
☣️ saving token: <CKServerChangeToken: 0x7b0400026840; data=AQAAAWpzvo3P>
☣️ FetchDatabaseChangesOperation complete ?? ⏱0.13
? FetchRecordZoneChangesOperation no changes ??
? ModifyObjectsOperation - no changes ??
? UploadChangesOperation - no uploads ??
? ModifyObjectsOperation - no changes ??
? SyncOperation complete ?? ⏱0.13

РЕДАКТИРОВАТЬ ДОБАВИТЬ:

Если я перехожу к панели мониторинга и выбираю изменения зоны с тех пор любой из этих жетонов изменений, это дает мне правильный ответ, что никаких изменений нет:

iCloud Dashboard showing no changes occured

Я не понимаю, почемугенерирует новые токены, если нет новых изменений?

1 Ответ

0 голосов
/ 12 мая 2019

Я тоже это заметил.Кажется, что CKDatabase рассматривает любые операции извлечения как действия с базой данных, достойные продажи нового токена.Это должно быть хорошо, так как оно не должно вызывать побочных эффектов в вашем приложении.Просто нужно убедиться, что последний токен будет сохранен локально, даже если изменений нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...