CloudKit-如何使用CKModifyRecordsOperation检索刚刚保存的记录的ckRecordID

时间:2018-09-22 06:57:28

标签: cloudkit ckmodifyrecordsoperation

我正在使用CoreData在CloudKit中保留记录的本地缓存。保存新记录时,请执行以下操作:

  1. 将记录插入CoreData。我将此记录标记为CloudKit中未更新。万一我的CKModifyRecordsOperation失败了,我仍然可以稍后使用此标志将其更新到CloudKit。
  2. 使用CKModifyRecordsOperation将记录插入CloudKit。
  3. 尝试获取在步骤2中插入的记录的ckRecordID。 (这是我的逻辑失败的地方,因为我不确定如何实现此目标)。我没有其他键(引用),希望仅使用CKRecordID作为CoreData和CloudKit之间的引用。
  4. 将ckRecordID(在步骤3中获取)更新为CoreData。

解决上述问题的最佳逻辑是什么?谢谢您的时间和回复。

1 个答案:

答案 0 :(得分:1)

我通过在本地创建CKRecordID并在CloudKit中对其进行更新来解决此问题。以下是来自苹果文档的报价:

  

要将自定义记录ID分配给新记录,您必须创建   首先是CKRecordID对象。您需要知道预期的名称和区域   该记录的信息,这可能还需要创建一个   CKRecordZone.ID对象。创建记录ID对象后,   使用其init(__ recordType:recordID :)初始化新记录   方法。

这是我的代码:

let zone = CKRecordZone(zoneName: Schema.Zone.group)
let uuid = NSUUID()
let recordType = Schema.RecordType.group
let recordName = uuid.uuidString
let recordID = CKRecordID(recordName: recordName, zoneID: zone.zoneID)
let newRecord = CKRecord(recordType: recordType, recordID: recordID)