Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/110.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 核心数据-2个对象模型,1个或2个托管对象上下文-哪个更好?_Ios_Core Data_Nsmanagedobjectcontext - Fatal编程技术网

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

Ios 核心数据-2个对象模型,1个或2个托管对象上下文-哪个更好?,ios,core-data,nsmanagedobjectcontext,Ios,Core Data,Nsmanagedobjectcontext,我正在开发一个小的iPhone日志应用程序,我想将位置数据数据库与用户记录的数据分开 我把两者分开有几个原因,包括 1) 我可能会用应用程序更新来推动定期的位置数据更新,我不想冒着出错和影响用户数据的风险 2) 位置数据可能会使用户数据相形见绌,因此如果两者分开,同步和备份用户文件的速度会更快 因此,如果我打算有两个持久性存储,那么在性能和编码复杂性方面,一个上下文中有两个持久性存储比两个单独的上下文(每个上下文都有自己的持久性存储)有优势还是劣势 任何关于这方面的想法都将不胜感激——说到这件事

我正在开发一个小的iPhone日志应用程序,我想将位置数据数据库与用户记录的数据分开

我把两者分开有几个原因,包括

1) 我可能会用应用程序更新来推动定期的位置数据更新,我不想冒着出错和影响用户数据的风险

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

因此,如果我打算有两个持久性存储,那么在性能和编码复杂性方面,一个上下文中有两个持久性存储比两个单独的上下文(每个上下文都有自己的持久性存储)有优势还是劣势

任何关于这方面的想法都将不胜感激——说到这件事,我有点像n00b——提前谢谢

西蒙
.

我在我的应用程序中实现了类似的功能,我从两个数据库加载数据,因为我想将更新推送到某一组数据

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

[__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];
到目前为止,我发现的唯一问题是你不能在商店之间建立关系。演示如何使用获取的属性复制关系


希望这能有所帮助。

事实上,我能够使用两个不同的ManagedObjectContext和两个不同的模型,并使用同一个应用程序使用两个不同的持久存储

只需将它们加载到应用程序委托上,就可以在整个应用程序中使用

我所做的只是复制并粘贴了与第一个上下文完全相同的初始化默认代码,并为新的上下文、存储和模型重命名了它


我为什么要这样做?有一个完全独立的应用程序模块交给了我,我没有太多的控制权,我不想弄乱我的应用程序的逻辑,并能够将其保存在代码库上的一个单独的分支中,为主分支执行不同的提交和挑选增强

谢谢你的回答和其他答案的链接。我一直在考虑两个独立的模型,但我想我看到了您对一个模型所做的事情(这可能是从每个持久性存储中加载某些实体)。然而,它并没有回答单个上下文实现是否比两个单独的上下文具有性能优势的问题。有什么想法吗?