从 CKReference 中获取 CKReference 对象

Posted

技术标签:

【中文标题】从 CKReference 中获取 CKReference 对象【英文标题】:Fetch a CKReference object from a CKReference 【发布时间】:2016-05-18 09:58:47 【问题描述】:

我有 3 种记录类型,其中包含如下属性:

客户

用户名:字符串

ProfilImage : UIImage

评论

用户:客户参考

消息:字符串

商店

评论:评论参考列表

我可以从 Shop CKRecord 对象中获取客户端用户名和 ProfilImage 吗?我可以走这条路吗:

    从商店记录中获取 cmets 引用 从找到的每个评论参考中获取用户参考 最后从店铺记录的评论参考的用户参考中获取用户名和配置文件

如果有路径,最好的方法是什么?

【问题讨论】:

您的步骤列表正确。至于实际这样做,它与进行任何其他 fetch 没有什么不同。 好的,感谢您的回答@rmaddy。在做很多事情之前,我需要确保这些步骤是好的…… 【参考方案1】:

以下是第 1 步的示例。其他步骤将与您列出的步骤类似,级联上一步的结果。 (注意:不需要显式的 CKReference 字段,因为它们可以从 CKRecord 变量中收集,但我想让示例更具可读性)

struct Shop 
  // other variables....
  var record : CKRecord?
  var commentRef : CKReference?


struct Comment 
  // other variables....
  var record : CKRecord?
  var clientRef : CKReference?


var shops : [Shop]
var comments : [Comment]

func commentsWithReference(ref: CKReference) -> [Comment] 
  let matchingComments = comments.filter $0.record!.recordID == ref.recordID 
  return matchingComments


let shopComments = shops.map  commentsWithReference($0.commentRef!) 

【讨论】:

谢谢,这正是我要找的 ;)

以上是关于从 CKReference 中获取 CKReference 对象的主要内容,如果未能解决你的问题,请参考以下文章

从 CloudKit 获取包括 CKReference 的数据

无法在 for 循环中从公共数据库中获取多个 CKReference 记录

使用 CKQueryOperation 和 CKReference 获取大集合

CloudKit CKReference 列表

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

CloudKit - 在 CKRecord 中存储多个 CKReference