我试图用本地核心数据堆栈实现cloudkit同步,我有一些疑问如下我需要一个表,除了CKRecordID字段之外还有其他字段。那我该怎么做呢? ……
您可以使用被调用的方法生成您自己的UUID,然后您可以将其用作记录ID。
let uuid = CFUUIDCreateString(nil,CFUUIDCreate(nil))
您需要创建向后指向的引用。那么你 的 不会 强> 把它放在父RECORD的参考文献中,然后用它创建一个孩子;
您将使用此ID创建父级并将子级指向它
这样,如果父母被删除,是的,孩子会[假设你选择那个选项];但如果孩子被删除,父母仍然留在原地。
这里有一些Swift 2.0代码将它们全部组合在一起,newRecord这里是一个CKRecord,theLink是一个参考字段。创建子记录时要使用的代码。
uniqReference = NSUUID().UUIDString let singleLink2LinkthemALL = CKRecordID(recordName: uniqReference) let theLinkRef = CKReference(recordID: singleLink2LinkthemALL, action: .DeleteSelf) newRecord2.setObject(theLinkRef, forKey: "theLink")
我强烈怀疑;我没有测试过,如果你有一个带有两个不同父记录的后向引用的子记录,即使其中一个父记录被删除,它也会保留。
当您开始同步时 的 云套件 强> 和 的 核心数据 强> 从父实体启动它,然后同步子实体。
当设备1与云套件同步时,子记录将被同步。
当设备2将在从云套件删除到核心数据之前进行同步时,您必须检查以下方案: -
(注意: - 在从云套件或核心数据中删除任何父级之前,您必须首先检查是否有任何新的子级可用于其对方)
你说私有数据库,你应该使用CloudKit CoreData,它正是它的设计方案。
公共数据库是一个不同的故事。