У вас есть несколько доступных вариантов, но все они могут потенциально привести к гоночным условиям, когда вы пытаетесь написать оба одновременно, но реальность этого минимальна.
Независимо от того, какой подход Принято, вы всегда должны занять позицию запрос сначала . Проверьте, существует ли запись, обновите ее при необходимости, затем запишите новые / обновленные значения.
Итак, в вашем примере:
- Первое приложение запросит запись, и создайте запись - поскольку записи не существует.
- Второе приложение, которое нужно запустить, запросит запись, найдет ее и ничего не сделает, потому что запись существует.
Каждая запись в CloudKit поддерживает modificationDate
. Поэтому, если вы действительно обеспокоены перезаписью данных, которые не должны быть переопределены, вы можете добавить внимательные запросы и проверки даты, чтобы определить, должна ли произойти запись.