Я успешно перенес свое приложение на использование NSPersistentCloudKitContainer
, чтобы синхронизировать его данные с помощью CloudKit.
Однако мне интересно, как мне поступить с уникальностью определенных объектов. Например, предположим, что объект User
имеет свойство emailAddress
, которое должно быть уникальным. Теперь рассмотрим случай, когда два устройства создают User
экземпляров с одним и тем же адресом электронной почты. В моей текущей реализации ничто не навязывает уникальность, поэтому я получаю 2 экземпляра, доступных на обоих устройствах, как только они получат синхронизацию изменений.
В настоящее время всякий раз, когда я выбираю объекты, предполагая, что они уникальны, я проверяю, они действительно есть, и если нет, объедините их, включая присвоение отношений одного из экземпляров другому. После слияния удаляю "пустой" экземпляр. Хотя это, кажется, работает нормально, я также могу предположить случаи, когда это может go неправильно: когда два устройства объединяются в одно и то же время и удаляют разные экземпляры, вызывая удаление всех из них.
Как следует Я имею дело с такими случаями?
PS. Я искал похожие вопросы и нашел несколько похожих, но все они относятся к явному использованию CKRecord
. Поскольку я использую NSPersistentCloudKitContainer
, который инкапсулирует и упрощает реализации CloudKit, я не работаю с такими классами «низкого уровня».