Я еще не использовал NSPersistentCloudKitContainer
в проекте, но вы можете предотвратить дублирование в Базовые данные , выбрав объект в вашем .xcdatamodel
и добавив одно из его свойств в качестве уникального ограничения. Как правило, какой-то король ID поля. Это предотвратит сохранение дубликатов объектов в магазине. Если вы сделаете это, обязательно установите .mergePolicy
в контексте, чтобы Core Data знала, как с этим справиться.
Re: CloudKit , если вы сохраните новый объект CKRecord
и вручную назначите CKRecordID
, все содержимое контейнера, соответствующее этому идентификатору, будет перезаписано. Я часто устанавливаю свои идентификаторы таким образом, чтобы потом смело пакетно обновлять кучу записей.
let recordID = CKRecordID(recordName: "{manually set an ID}")
let record = CKRecord(recordType: "{your record type}", recordID: recordID)