cloudkit - CloudKit - 如何使用 CKModifyRecordsOperation 检索刚刚保存的记录的 ckRecordID
问题描述
我正在使用 CoreData 在 CloudKit 中保存本地记录缓存。保存新记录时,我执行以下操作:
- 将记录插入 CoreData。我将此记录标记为未在 CloudKit 中更新。以防万一我的 CKModifyRecordsOperation 失败,我仍然可以稍后使用此标志将其更新到 CloudKit。
- 使用 CKModifyRecordsOperation 将记录插入 CloudKit。
- 尝试获取在步骤 #2 中插入的记录的 ckRecordID。(这就是我的逻辑失败的地方,因为我不确定如何实现这一点)。我没有任何其他键(参考)并且希望仅使用 CKRecordID 作为 CoreData 和 CloudKit 之间的参考。
- 将 ckRecordID(在步骤 #3 中获取)更新为 CoreData。
解决上述问题的最佳逻辑是什么?感谢您的时间和回复。
解决方案
我通过在本地创建一个 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)
推荐阅读
- javascript - Dynamic YouTube Video page - Get current Video ID & Title
- ios - Xamarin application does not work in ad-hoc mode
- authentication - Xamarin.Auth 或 IdentityModel + IdentityServer4
- python - Pandas:基于 pandas 列中匹配子字符串的 Groupby
- java - 在 Java 中声明常量的最佳方式
- javascript - 如何过滤有时值为空的数组?
- vega - 使用 Node.js 的服务器端部署未提供正确的 SVG
- django - 如何使用django将choicefiled的值存储在数据库中
- postgresql - PostgreSQL:一个索引快,另一个索引慢
- c# - 将接口转换为泛型类(继承)