在 CloudKit 中获取 CKReferences 的最佳实践方法是啥?

Posted

技术标签:

【中文标题】在 CloudKit 中获取 CKReferences 的最佳实践方法是啥?【英文标题】:What is the best practice approach to fetching CKReferences in CloudKit?在 CloudKit 中获取 CKReferences 的最佳实践方法是什么? 【发布时间】:2014-12-01 15:14:21 【问题描述】:

在我的 CloudKit 设置中,我有一个 Person 记录类型,每个人都有一个 Friend 属性,这是另一个 Person 对象的 CKReference

我获取所有PersonCKRecords。我将这些人列在一张表中,并列出他们的朋友。目前我只使用CKReference 并使用recordID 单独获取每个朋友。

这是我能看到的唯一方法,但最佳做法是什么?特别是因为我可能会吸引大量的朋友。单独获取所有这些对象似乎违反直觉。

我想知道是否有类似 CoreData 的方法,您可以在其中选择在主提取中提取相关对象?例如,当我获取Person 时,它也会自动获取朋友。

【问题讨论】:

【参考方案1】:

您可以使用“in”谓词查询来获取多个 id。您可以像这样定义谓词:

NSPredicate(format: "To_ID in %@", [recordIdMe, recordIdOther])!

在您看到recordIdMerecordIdOther 的情况下,您应该有一组有效的CKReference 对象。

在 CloudKit 中没有自动获取相关记录的功能。

【讨论】:

【参考方案2】:

其实你应该收集所有的 RecordID 并在相关的数据库对象中添加一个CKFetchRecordsOperation

您会得到一个字典,以帮助您将结果与原始列表进行匹配。

【讨论】:

以上是关于在 CloudKit 中获取 CKReferences 的最佳实践方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

无法使用 CloudKit 获取 sharedCloudDatabase 自定义区域中的记录

CloudKit:获取列表属性中具有特定元素的记录

如何在私有数据库 CloudKit 中获取 RecordType 的所有名称

从 CloudKit 获取包括 CKReference 的数据

保存和获取 CloudKit 引用

从 Cloudkit 获取音乐文件