多个核心数据实例
Posted
技术标签:
【中文标题】多个核心数据实例【英文标题】:Multiple Core Data instances 【发布时间】:2013-08-19 11:31:53 【问题描述】:我正在设计一款具有“离线工作”功能的应用。激活此功能后,来自外部数据库的数据将与设备上的 Core Data 数据库同步。我遇到的问题涉及多个用户。
我的应用程序还实现了一个权限系统,其中一个用户可以访问另一个用户无法读取的数据。我的问题是,是否可以为每个登录的用户创建我的核心数据模式的实例?这样,我可以为每个用户切换数据库,而他们不能与其他用户的数据进行交互。
我当然也愿意接受其他建议!
【问题讨论】:
【参考方案1】:是的,克里斯,你可以通过某些方式做到这一点,这是我在我的一个应用中所做的,我推荐:
创建 NSPersistentStore 时,使文件名取决于用户 ID 或用户名。等待从您的服务器获取用户 ID 以创建它。如果应用处于注销状态,不要调用NSPersistentStore,但以防万一,如果当前用户id不存在则返回nil;
每次用户登录时,根据上面的NSPersistentStore发起NSManagedObjectContext;
每次用户注销时,请确保将所有核心数据堆栈(NSManagedObjectContext、NSPersistentStore 和 NSManagedObjectModel)设置为nil
,以便从内存中删除所有 NSManagedObjects。
这样一个用户应该无法访问其他用户的数据,但我不确定架构。
【讨论】:
看起来很棒!我可以在登录时以编程方式创建 NSPersistentStore,还是需要事先知道用户 ID? 检查第一部分的编辑。如果它帮助并解决了您的问题,请接受答案和/或投票。以上是关于多个核心数据实例的主要内容,如果未能解决你的问题,请参考以下文章