使用NSPersistentCloudKitContainer时预填充Core Data存储的最佳方法是什么?

问题描述 投票:-1回答:1

我有以下情形,其中我要从JSON文件解析对象并将其存储到我的Core Data存储中。现在,我正在使用NSPersistentCloudKitContainer,并且在其他设备上运行应用程序时,它还会解析JSON文件并将对象添加到Core Data。这导致对象重复。

现在我想知道是否有:

  • 如果我可以检查一个实体是否已经存在一个简单的方法?
  • 还有其他避免对象两次在CloudKit中保存的方法?
  • 从远程获取数据完成后收到通知吗?
swift core-data ios13 cloudkit
1个回答
0
投票

我尚未在项目中使用NSPersistentCloudKitContainer,但是您可以通过在.xcdatamodel中选择一个实体并将其属性之一添加为唯一约束来防止Core Data中的重复。通常情况下,一些ID字段之王。这样可以防止将重复的对象保存到存储中。

enter image description here

Re:CloudKit,如果您保存一个新的CKRecord对象并手动分配一个CKRecordID,则与ID匹配的容器中的所有内容都会被覆盖。当我为CloudKit容器添加种子时,或者当我想批量更新一堆可能已经存在匹配项的记录时,就会执行此操作。

let recordID  = CKRecordID(recordName: "{manually set an ID}")
let record    = CKRecord(recordType: "{your record type}", recordID: recordID)
© www.soinside.com 2019 - 2024. All rights reserved.