【问题标题】:CloudKit - How to retrieve the ckRecordID of the record just saved using CKModifyRecordsOperationCloudKit - 如何使用 CKModifyRecordsOperation 检索刚刚保存的记录的 ckRecordID
【发布时间】:2018-09-22 06:57:28
【问题描述】:

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

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

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

【问题讨论】:

    标签: cloudkit ckmodifyrecordsoperation


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-31
      相关资源
      最近更新 更多