CloudKit: CKQueryOperation для удаленных записей
Есть ли способ запросить CloudKit для недавно удаленных элементов (возможно, из определенной временной отметки), не используя CKFetchRecordChangesOperation
? Я использую общедоступную базу данных, поэтому я не могу использовать пользовательские зоны (что было бы требованием для CKFetchRecordChangesOperation
) ... так что мне нужен способ смоделировать это с публичными базами данных.
Я хочу иметь возможность эффективно обновлять мой локальный кэш базовых данных для внесения изменений в записи CloudKit. Когда вы запрашиваете записи CloudKit, CKRecord, кажется, имеет creationDate
а также modificationDate
свойство, к которому можно обратиться, чтобы увидеть недавно созданные / измененные записи, но оно не будет работать для записей, которые были удалены в CloudKit.
Какова будет эффективная стратегия здесь?
2 ответа
Одним из решений, о котором я подумал, является поддержание свойства "deleDate" в CKRecord,
Это не обязательно
Вы хотите CKFetchRecordZoneChangesOperation
Посмотрите видео WWDC здесь: https://developer.apple.com/videos/play/wwdc2014/231/
Одним из решений, о котором я подумал, является поддержание свойства "deleDate" в CKRecord, поэтому, когда данные "удаляются", вы фактически не удаляете запись из CloudKit, а просто обновляете это свойство. Это позволит другим устройствам запрашивать записи, которые были недавно удалены, поэтому вы можете обновить локальный кеш. Вы также можете периодически проверять записи, которые были удалены с помощью DateDate более чем на 1 неделю или что-то в этом роде, и фактически удалять записи в этот момент (хотя вы должны следить за тем, чтобы несколько устройств удаляли записи одновременно, и другие пограничные случаи). Не самое элегантное решение, но может сработать. Если есть лучший вариант, хотел бы услышать это.