我正在构建一个需要在家庭成员之间同步数据的应用程序(比如共享购物清单),而我正在考虑使用CloudKit。我的理解是,我可以拥有对所有人公开的表格,或者只有一个个人/ iCloud帐户的私人表格。我需要的是两者的混合。所以有两个问题:
1)有没有办法在妈妈和爸爸之间私下分享数据,只有他们(共享私人容器,实际上)?
2)如果我在公共容器中创建所有数据并且只是过滤掉谁可以看到应用程序上的内容,那么公共容器数据是否可以被任何人查看/攻击? (我问这个,因为可能涉及一些稍微敏感的数据)。有人可以做相当于“全部选择”并查看所有内容吗?
非常感谢,
约什
答案 0 :(得分:1)
有几种方法可以实现这样的目标。在所有情况下,它归结为:
添加一个CKReference字段,该字段将填充您要与之共享的用户的ID。 确保您的谓词将过滤ID为您的CKReference字段(与您共享) 存储CKReference的位置和方式取决于您希望如何共享。
如果您只想与一个人共享,那么只需将CKReference字段包含在您的主记录类型中即可。不要像在问题中所述那样将其添加到邮件中。添加一个额外的字段。 如果要与有限数量的人共享,则可以在recordType中添加一个字段,该字段是CKReference的列表。 如果您想与一大群人共享,那么您可以添加一个group recordType,它将具有groupID加上groupMembers recordType,您可以在其中存储属于该组成员的所有用户CKReference id。 在所有情况下,解决方案都是安全的。这一切都归结为您在应用中定义的谓词。如果您的某个谓词过滤器不正确,那么可能会发生有人看到不适合他的内容。
在EVCloudKitDao的演示应用程序中,是一个基于CloudKit的聊天应用程序。它正在使用便利库EVCloudKitDao,但共享内容的结构将类似。
答案 1 :(得分:1)
回答您的问题#1:在WWDC 2016上引入了CloudKit共享。这允许在一组已知用户之间共享私人数据库记录,这听起来就像您正在寻找的那样。
“CloudKit中的新功能”会话中有一个很棒的概述:https://developer.apple.com/videos/play/wwdc2016/226/