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