如何在 CloudKit 中存储对共享记录的引用

Posted

技术标签:

【中文标题】如何在 CloudKit 中存储对共享记录的引用【英文标题】:How do I store a reference to a shared record in CloudKit 【发布时间】:2017-09-27 12:51:04 【问题描述】:

我想将用户偏好存储在附加到用户公共用户记录的 CloudKit 中。首选项可以是私人记录或共享记录(由其他用户共享)。

我可以使用 CKReference 来存储对共享记录的引用吗?如果可以,我如何确定存储的 CKReference 是引用私有数据库还是公共数据库?

目前,如果我将 CKReference 存储到私有记录,那么我可以查询私有数据库以检索记录,但如果我将 CKReference 存储到共享记录,那么我如何确定要查询哪个数据库。

我可以使用 CKReference 跨数据库链接,还是必须使用记录名称之类的东西来搜索它,并存储一个单独的引用来指示它是私有记录还是共享记录?

编辑:

好的,阅读文档是值得的,但是我花了一段时间才找到我需要的解释,这是文档的摘录

当您不能使用 CKReference 对象来引用记录时,您也可以使用记录 ID。引用仅在数据库的单个区域内有效。要引用当前区域或数据库之外的对象,请将字符串保存在记录的 CKRecordID 和 CKRecordZoneID 对象中。当您想稍后检索记录时,请使用这些字符串重新创建记录和区域 ID 对象,以便您可以获取记录。

https://developer.apple.com/documentation/cloudkit/ckrecordid

【问题讨论】:

非常感谢,遇到了同样的问题。如果您添加自己的答案可能会有所帮助,因为作为疏忽,人们可能会认为没有解决方案。您可以回答自己的问题 完成...我认为当时没有足够的时间让我发布自己的答案,我忘记了。 【参考方案1】:

好的,阅读文档是值得的,但我花了一段时间才找到我需要的解释,这是文档的摘录

当您不能使用 CKReference 对象来引用记录时,您也可以使用记录 ID。引用仅在数据库的单个区域内有效。要引用当前区域或数据库之外的对象,请将字符串保存在记录的 CKRecordID 和 CKRecordZoneID 对象中。当您想稍后检索记录时,请使用这些字符串重新创建记录和区域 ID 对象,以便您可以获取记录。

https://developer.apple.com/documentation/cloudkit/ckrecordid

【讨论】:

非常感谢!!,我有一个关于CKError 的localizedDescription 的问题,你能帮我解决一下吗? ***.com/questions/49856270/…

以上是关于如何在 CloudKit 中存储对共享记录的引用的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit - 在 CKRecord 中存储多个 CKReference

在 sharedDB cloudkit 中订阅记录更改

CloudKit 分享

如何删除 CKRecord 和 CloudKit 中的所有引用记录

无法共享 CloudKit CKShare 记录

CloudKit:如何使用本地持久存储处理帐户更改?