Ios 为什么我需要2个或更多的核心数据模型?

Ios 为什么我需要2个或更多的核心数据模型?,ios,core-data,Ios,Core Data,我很想知道谁使用了多个核心数据模型,为什么,好处是什么,我正在开发一个应用程序,我认为我可以从多个模型中受益,但我不确定其他好处 我即将推出的应用程序将用于iPad和另一个版本的iPhone,iPad有3个主要内容,iPhone只有一个也在iPad上,因此通过将其隔离到不同的核心数据模型中,也许在我的两个应用程序中维护该模型的更改会更容易 虽然我确实有两个实体,这两个实体我都需要,所以我可以复制它们,或者有一个大模型 有什么建议吗 无论如何,这当然不是一种常见情况,还有什么其他情况可能导致您创建

我很想知道谁使用了多个核心数据模型,为什么,好处是什么,我正在开发一个应用程序,我认为我可以从多个模型中受益,但我不确定其他好处

我即将推出的应用程序将用于iPad和另一个版本的iPhone,iPad有3个主要内容,iPhone只有一个也在iPad上,因此通过将其隔离到不同的核心数据模型中,也许在我的两个应用程序中维护该模型的更改会更容易

虽然我确实有两个实体,这两个实体我都需要,所以我可以复制它们,或者有一个大模型

有什么建议吗


无论如何,这当然不是一种常见情况,还有什么其他情况可能导致您创建多个核心数据模型?

我建议只使用一个核心数据模型。如果将它们分开,你将无法使用核心数据的许多功能,例如关系(数据存储中对象之间的关系)等。即使你现在看不到需要,你也可能会想出一个主意,在以后需要时添加到应用程序中

你仍然可以在iPad和iPhone上使用相同的核心数据模型,只需忽略你没有使用iPhone的部分(直到你收到功能请求添加缺失的部分,你很可能会这样做)。然后你就可以准备好了,并且已经有了可用的数据

只有在极端情况下,才值得使用单独的数据模型,例如,如果您要下载只读的现有数据集等。您可以将只读数据集与用户设置/数据等分离


祝应用程序好运

有时在不同的存储中保存不同类型的数据是有意义的。例如,一个像产品目录一样工作的应用程序可能有一个商店是产品数据库,另一个商店跟踪用户的收藏夹、当前订单和历史记录。这使得在不影响用户数据的情况下更新产品数据库相对容易,并且在不复制整个产品数据库的情况下备份用户数据相对容易

使用多个存储的另一个场景是存储相同类型的数据。例如,基于文档的应用程序通常会为每个文档创建一个单独的存储——存储可能就是文档


更新:我在上面写的内容使用单独的存储区,但您询问使用单独的模型。核心数据实际上可以让您定义单独的模型,然后在运行时将它们合并在一起,以便在同一个存储区(或者多个存储区)中使用。因此,需要明确的是,模型定义了实体及其之间的关系。存储区是使用模型中定义的模式实际保存数据的地方。您可能会将一个复杂的模型分解为几个较小的模型,以保持简单,并在您随时间修改模型时帮助迁移数据,或者您可能会使用多个模型并将它们分开,因为您计划使用包含不同类型数据的不同存储,如上所述。

为了指出明显的问题,当你使用多个商店时,你当然可以使用关系;您无法在不同存储中的对象之间创建关系。我知道你的意思,但如上所述,情况听起来比实际情况更糟。所以在我的情况下,我确实有一些实体要分享,媒体就是其中之一。我有一个MediaVideo、MediaImage和MediaFile,其中包含远程URI,并处理实际文件的本地缓存。如果我正确理解“核心数据的许多特性”中包含的其他特性,我希望重用这些特性,但无法使用多个模型?在我看来,您可以拥有多个存储,并且可以相当无缝地一起访问它们,这本身就是核心数据的一个巨大功能。@DaveWood:今天有点晚了,但谢谢您。您刚刚帮我做了一个决定,我现在将使用一个数据模型。值得注意的是,如果您使用多个数据模型,则在更新其中一个数据模型时似乎不可能进行迁移,因为应用程序使用的结果模型是从所有模型中合并而来的。通过在模型A中添加收藏夹,您不会引用模型B(产品模型)中的对象吗?@Daniel Right--您无法在不同的商店中创建对象之间的关系,因此您通常可以保存足够的信息(例如,产品代码)你可以再次找到你想要的东西。有关商店和型号之间的重要区别,请参见我的更新。如果所讨论的对象都将保存在同一个存储中,并且如果需要在它们之间创建关系,那么应该继续使用一个模型。如何添加多个模型类?