ios - 核心数据 - 2 个对象模型,1 个或 2 个托管对象上下文 - 哪个更好?

标签 ios core-data nsmanagedobjectcontext

我正在开发一个小型 iPhone 记录应用程序,我希望将位置数据数据库与用户记录的数据分开。

我有几个理由将两者分开,包括

1) 我可能会通过应用程序更新推送定期位置数据更新,但我不想冒出现问题并影响用户数据的风险。

2) 位置数据可能会使用户数据相形见绌,因此如果两者是分开的,同步和备份用户文件将会更快。

因此,考虑到我打算拥有两个持久存储,在性能和编码复杂性方面,与 2 个单独的上下文(每个上下文都有自己的持久存储)相比,拥有一个包含两个持久存储的上下文在性能和编码复杂性方面有优势还是劣势?

对此的任何想法都将不胜感激 - 当谈到这些东西时我有点无知 - 提前致谢

西蒙 。

最佳答案

我在我的应用程序中实现了类似的功能,我从 2 个数据库加载数据,因为我想将更新推送到特定的数据集。

我的做法是使用 1 个对象模型、1 个托管对象上下文和 2 个持久存储,每个存储加载不同的 sqlite 文件。为此,我在数据模型文件中创建了 2 个配置,然后将适当的实体拖到每个配置中。然后,当您创建持久存储时,请执行以下操作:

[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration1" URL:store1URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error];
[__persistentStoreCoordinator addPersistentStoreWithType:NSSQLiteStoreType configuration:@"Configuration2" URL:store2URL options:[NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:YES], NSMigratePersistentStoresAutomaticallyOption, [NSNumber numberWithBool:YES], NSInferMappingModelAutomaticallyOption, nil] error:&error];

到目前为止,我发现的唯一问题是商店之间无法建立关系。 This answer展示如何使用获取的属性来复制关系。

希望这有帮助。

关于ios - 核心数据 - 2 个对象模型,1 个或 2 个托管对象上下文 - 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14523423/

相关文章:

ios - 核心数据 |子上下文内存管理

ios - 如何在不制作 IBOutlet 的情况下以编程方式在 Swift 中为 UIView 高度约束设置动画?

c# - SignalR(v2.2.0) Client.Group() 不适用于 IOS 客户端

iOS在动画过程中显示标签或图像位置

Swift 从实体(核心数据)中获取特定的 NSManagedObject

ios - 按关系批量获取的多上下文 CoreData

ios - 如何在应用程序模型而不是 View Controller 中实现 NSManagedObjectContext?

ios - UISplitViewController 的 MasterViewController 在全屏视频播放时旋转后不显示

ios - 魔法记录,保存元素

ios - CoreData 一对多,对多进行排序