我正在构建一个需要在家庭成员之间同步数据的应用程序(如共享购物 list ),我正在考虑使用 CloudKit。我的理解是,我既可以拥有对所有人公开的表格,也可以拥有仅对一个个人/iCloud 帐户公开的表格。我需要的是两者的混合体。所以两个问题:
1)有没有办法在妈妈和爸爸之间私下共享数据,并且只有他们(实际上是共享的私有(private)容器)?
2)如果我在公共(public)容器中创建所有数据并简单地过滤掉谁可以看到应用程序上的内容,那么公共(public)容器数据是否对任何人都是可见/可破解的? (我问这个是因为可能涉及稍微敏感的数据)。有人可以做相当于“全选”的操作并查看所有内容吗?
非常感谢,
乔什
最佳答案
有几种方法可以实现这样的目标。在所有情况下,它归结为:
添加一个 CKReference 字段,该字段将填充您要与之共享的用户的 ID。
确保您的谓词将过滤 ID 属于您的 CKReference 字段(与您共享)
您存储 CKReference 的位置和方式取决于您想要共享的方式。
如果您只想与一个人共享,那么只需将该 CKReference 字段包含到您的主记录类型中。不要像您在问题中所说的那样将其添加到消息中。添加一个额外的字段。
如果你想分享给有限数量的人,那么你可以在你的 recordType 中添加一个字段,它是一个 CKReference 列表。
如果您想与一大群人共享,那么您可以添加一个组记录类型,该组记录类型将具有一个 groupID 和一个 groupMembers 记录类型,您将在其中存储作为该组成员的所有用户 CKReference id。
在所有情况下,解决方案都是安全的。这一切都取决于您在应用程序中定义的谓词。如果您的谓词过滤器之一不正确,则可能有人看到不适合他的东西。
在 EVCloudKitDao 的演示应用程序中是一个基于 CloudKit 的聊天应用程序。它使用便利库 EVCloudKitDao,但共享内容的结构类似。
关于ios - CloudKit 可以创建共享私有(private)容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850665/