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