Как заполнить данные с CloudKit? - PullRequest
0 голосов
/ 14 февраля 2020

Мне нужно создать несколько записей в CloudKit для каждого пользователя при запуске приложения.

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

Вместо этого я хочу, чтобы первое устройство для записи в CloudKit получило запись. И тогда второе устройство просто обновит значения этих записей, не создавая их заново.

Как мне этого добиться?

1 Ответ

0 голосов
/ 14 февраля 2020

У вас есть несколько доступных вариантов, но все они могут потенциально привести к гоночным условиям, когда вы пытаетесь написать оба одновременно, но реальность этого минимальна.

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

Итак, в вашем примере:

  • Первое приложение запросит запись, и создайте запись - поскольку записи не существует.
  • Второе приложение, которое нужно запустить, запросит запись, найдет ее и ничего не сделает, потому что запись существует.

Каждая запись в CloudKit поддерживает modificationDate. Поэтому, если вы действительно обеспокоены перезаписью данных, которые не должны быть переопределены, вы можете добавить внимательные запросы и проверки даты, чтобы определить, должна ли произойти запись.

...