多个核心数据实例

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? 检查第一部分的编辑。如果它帮助并解决了您的问题,请接受答案和/或投票。

以上是关于多个核心数据实例的主要内容,如果未能解决你的问题,请参考以下文章

使用多个实例时的 EF 核心并发

HBase架构核心模块

HBase架构核心模块

HBase架构核心模块

核心数据对现有项目 iphone 的影响

醒酒菜:动画图解核心内存区--堆