【发布时间】:2016-09-29 20:56:18
【问题描述】:
我正在使用 CloudKit 来管理消息列表(带有字段标题和正文的记录类型 Message)。所有消息都是公开的,我想维护用户使用移动应用程序阅读的消息。
该应用可以拥有成千上万的用户和消息。我使用 swift3。
我已经想到了不同的方法,但它们在性能方面似乎很差:
- 在 Message 中添加一个字段“readers”,该字段是用户 ID 对应的字符串列表。问题是如果我想添加一个新的用户 ID,我必须加载所有列表。如果很多用户都阅读了消息,这对于移动应用程序来说是有问题的。我可以在不下载所有列表的情况下延迟获取列表字段并向其添加值吗(就像在经典 Orm 中一样)?
- 添加另一个记录类型“读者”,它有两个字段:用户 ID 和消息 ID。我找不到将消息和阅读器加入谓词以仅下载用户尚未阅读的消息的方法。这可能吗?
- As suggested by Matthew:在私有数据库中添加一条记录类型ReadArticle,只存储一条消息的CKReference。问题是我们需要先下载所有消息 ID,然后再将它们发送到 NOT 谓词中。
我不知道如何使用像 CloudKit 这样的数据库来解决这个问题。
有什么建议吗?
【问题讨论】: