2014-12-30 7 views
3

Будет ли CKFetchRecordChangesOperation получить все записи из контейнера?Какие записи будут загружаться, когда CKFetchRecordChangesOperation будет вызывать с нулевым токеном?

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

reference говорит: Объект CKFetchRecordChangesOperation сообщает об изменениях и удаленных записях в указанной зоне записи. Используйте этот тип рабочего объекта для оптимизации операций выборки для локально управляемых наборов записей. В частности, используйте его, когда вы поддерживаете локальный кеш ваших данных записи, и вам необходимо периодически синхронизировать этот кеш с сервером.

Я даже запустил CKFetchRecordChangesOperation с другого устройства, чтобы исключить случай, только изменения, внесенные на другие устройства, возвращаются.

ответ

2

CKFetchRecordChangesOperation не имеет ничего общего с подписью CKS. Вместо этого он просто вернет все изменения во все типы записей.

В документации сказано это о маркере изменения:

Маркер изменения от предыдущей выборки операции. Это токен , переданный в ваш обработчик fetchRecordChangesCompletionBlock во время предыдущей операции выборки . Используйте этот токен, чтобы ограничить возвращаемые данные до только теми изменениями, которые произошли с того момента, как вы последний раз сделали тот же запрос на выборку . Если вы укажете nil для этого параметра, операция будет извлекать все записи и их содержимое.

Значит, вы просто получите все записи.

+0

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

+0

А ... но вы правы ... Я думаю, что это будут изменения с момента создания CKS-подписки ... hmmm позвольте мне посмотреть на это ... –

+0

В документации также говорится: 'извлекает непрочитанные объекты CKNotification из контейнера «. Поэтому без CKSподписки у вас не будет CKNotification. Поэтому я думаю, что вы получите только изменения с момента создания CKS-подписки ... Вам нужно исследовать это, чтобы быть уверенным. –