多个应用程序通过应用程序组对 CoreData 的不同权限

Different permissions by multiple Apps on CoreData via App Groups

我目前正在构建两个应用程序,它们在同一个应用程序组的帮助下在同一个 CoreData 容器中共享数据实体(这是有效的)。

我目前的目标是实现对这些数据的不同权限。为了更清楚,将这两个应用程序视为 Admin-App 和 User-App,它们都访问相同的数据,但 User-App 应该只能访问实体属性的减少选择。

解决这个问题的合理方法是什么?我已经考虑过了,导致了以下方法:

  1. 两个容器,多次保存数据
  2. 只需处理用户应用程序的开放访问,因为使用的应用程序组的开发人员应该知道如何处理他们的数据。

提前致谢!

iOS 上没有任何内容可以为您强制执行此类限制。如果某个应用可以访问应用组文件夹,则该应用可以读取和写入该文件夹中的任何内容。

简单的答案是,如果您正在编写这两个应用程序,请在编写它们时遵循您的政策,即哪些数据可由哪个应用程序读取或写入。

一个更复杂的答案(如果由于某种原因不能接受)是让管理应用程序将一些数据保存在它自己的容器中,并将一些数据保存在应用程序组中。您仍然可以使用该应用程序的私有容器,即使您也有一个群组。这意味着管理应用程序必须知道将哪些数据放入哪个容器,这可能会或可能不会很复杂,具体取决于您拥有的数据类型以及您的应用程序如何使用它。不过,管理应用程序没有理由不能拥有自己的私人数据。

Core Data 对这种方法有一些支持。您可以同时加载多个持久存储文件,Core Data 会将它们呈现为一个统一的数据存储。对于读取数据,这很容易处理。对于写入数据,它变得有点复杂,因为每次添加数据时,您都需要告诉 Core Data 使用哪个文件。这不是非常困难,但需要更多的工作和更多的研究才能理解你在做什么。