Задержка распространения обновлений SQLite в iCloud

Я создал приложение SQLite для iOS в стиле библиотеки, используя код примера приложения Recipes, и оно работает — обновления на одном устройстве (в конечном итоге) надежно распространяются на все другие устройства, на которых запущено одно и то же приложение. Я тестировал его с несколькими событиями в час в течение всего дня, и все транзакции журнала попадают на каждое устройство. Однако время распространения обновлений сильно варьируется. Если я запущу приложение и оставлю его сидеть, может пройти относительно много времени, прежде чем облако отправит транзакции обновления в приложение, и поэтому то, что на экране, останется старыми данными в течение такого же длительного времени. Хуже того, нет никаких указаний на то, что данные устарели.

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

Первый вопрос: существуют ли методы, которые заставят транзакции распространяться? a Этот поток предлагает нет.

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


person Feldur    schedule 12.02.2012    source источник


Ответы (1)


1) если вы найдете такие методы, пожалуйста, дайте мне знать.

2) здесь то же самое. Я даже не нашел надежного способа определить, не является ли запущенный в данный момент экземпляр приложения iCloud первым экземпляром, т. е. другие экземпляры уже отправили обновления в iCloud до тех пор, пока не будет получен первый толчок (что может занять некоторое неизвестное время)

person Kostiantyn Sokolinskyi    schedule 13.02.2012
comment
В качестве эксперимента я добавил в свое приложение код, который использовал облачную публикацию «ключ-значение», чтобы отслеживать, когда категории контента в моей базе данных были обновлены, и по какому UUID, а затем использовал эту метку даты для окрашивания элементов в пользовательском интерфейсе, которые представляли внешние данные. актуальные сделки. - person Feldur; 01.03.2012
comment
Эксперимент не сработал, поскольку никогда не было обнаружено случаев, когда данные «ключ-значение» обновлялись раньше, чем фактические транзакции основных данных. Мой алгоритм записи дат ключ-значение таков, что метка даты всегда будет обновляться после транзакции данных, если они сериализованы во времени или даже в одном и том же журнале. Это коррелированное поведение, хотя и вполне правдоподобное, не является чем-то, что я видел явно задокументированным. - person Feldur; 01.03.2012