我正在设计一个具有“离线工作”功能的应用程序。激活此功能后,来自外部数据库的数据会与设备上的 Core Data 数据库同步。我遇到的问题涉及多个用户。
我的应用程序还实现了一个权限系统,其中一个用户可以访问另一个用户无法读取的数据。我的问题是,是否可以为每个登录的用户创建我的核心数据模式的实例?这样,我可以为每个用户切换数据库,并且他们不能与其他用户的数据进行交互。
我当然也愿意接受其他建议!
我正在设计一个具有“离线工作”功能的应用程序。激活此功能后,来自外部数据库的数据会与设备上的 Core Data 数据库同步。我遇到的问题涉及多个用户。
我的应用程序还实现了一个权限系统,其中一个用户可以访问另一个用户无法读取的数据。我的问题是,是否可以为每个登录的用户创建我的核心数据模式的实例?这样,我可以为每个用户切换数据库,并且他们不能与其他用户的数据进行交互。
我当然也愿意接受其他建议!
是的,克里斯,你可以通过某些方式做到这一点,这是我在我的一个应用程序中所做的,我建议:
创建 NSPersistentStore 时,使文件名取决于用户 ID 或用户名。等待从您的服务器获取用户 ID 以创建它。如果应用程序处于注销状态,则不要调用 NSPersistentStore,但以防万一,如果当前用户 id 不存在则返回 nil;
每次用户登录时,根据上面的 NSPersistentStore 发起 NSManagedObjectContext;
每次用户注销时,请确保设置为nil
所有核心数据堆栈(NSManagedObjectContext、NSPersistentStore 和 NSManagedObjectModel),以便从内存中删除所有 NSManagedObjects。
这样一个用户不应该能够访问其他人的数据,但我不确定模式。