我使用CloudKit管理消息列表(记录类型消息带有字段标题和正文)。所有消息都是公开的,我想维护用户使用移动应用程序读取的消息。
该应用可以拥有数千个用户和消息。我使用swift3。
我想到了不同的做法,但在表现方面看起来很差:
我不知道如何使用像CloudKit这样的数据库来解决这个问题。
有什么建议吗?
答案 0 :(得分:1)
由于您指出的确切原因,这种方法并不理想,而且它还不安全,因为String
理论上可以包含任何内容。
即使有办法实现这一点,您也可以将用户ID存储在公共数据库中。这可能不是一个隐私意识的事情。
假设您有一个名为ReadArticle
的记录类型。该对象只包含一个字段,CKReference
到Message
记录。
然后,当有人阅读Message
时,您会获取recordId
的{{1}},从中创建Message
,并将该引用放入&#34 ;消息"类型为CKReference
的新CKRecord
对象的字段。然后,将其保存到用户的私人数据库。因为它是ReadMessage
,它实际上几乎不会占用iCloud中的任何空间,因为它只是一个指针,并且因为您使用了用户的#s私人数据库无需明确识别用户。
然后,当您想要所有未读消息时,获取CKReference
记录,并创建一个NOT谓词以接收记录ID不是任何读取记录的所有ReadMessage
记录。 CloudKit肯定支持NOT谓词,但如果它不支持指定记录ID的NOT谓词,那么你可以在消息上使用其他一些唯一字段。