CloudKit修改了用户过滤的记录?

Posted

技术标签:

【中文标题】CloudKit修改了用户过滤的记录?【英文标题】:CloudKit modified records filtered by user? 【发布时间】:2015-02-09 18:11:43 【问题描述】:

我正在为存储在 CloudKit 中的记录创建一个投票系统。 每条记录都存储有总票数。我希望每个用户只能对每条记录投票一次。

有没有办法查询给定类型的所有被给定用户修改的记录?

如果这不可能,有什么聪明的建议可以解决这个问题吗?

我想避免在用户记录上存储记录的 id,因为随着用户投票活动和记录总数的增加,这会导致缩放不良。

【问题讨论】:

【参考方案1】:

一种选择是将 CKReferences 数组存储为每条记录的属性,CKReferences 指向用户。然后,您可以使用诸如“user IN voteUserReferences”之类的谓词进行查询。不过不确定如何扩展。

另一个可能更好的选择是有一个投票记录类型,它包含对用户的引用和对记录的引用。如果您将这些投票记录的记录 ID 构建为用户 ID 和记录 ID 的串联,您应该能够非常快速地获取给定用户和记录的投票。

以这种方式为 Vote 设置记录 ID 的另一个优点是,如果您在用户已经对该记录投票时尝试创建新的投票,您将收到错误,因为记录 ID 必须是唯一的。

【讨论】:

以上是关于CloudKit修改了用户过滤的记录?的主要内容,如果未能解决你的问题,请参考以下文章

CloudKit,无法修改某些记录 - 未找到区域

修改 CKRecords 时出现 CloudKit 错误:“Zone Busy”

Cloudkit 为每个用户提供不同的记录类型?

清除/清除 CloudKit 容器的所有用户 iCloud 记录

使用 CloudKit 修改数据

CloudKit 分享