核心数据 - 与目标规范共享模型?
Posted
技术标签:
【中文标题】核心数据 - 与目标规范共享模型?【英文标题】:Core Data - Shared model with target specifications? 【发布时间】:2016-01-14 06:16:15 【问题描述】:我有一个项目,其中包含许多代表我们不同应用程序变体的目标。 所有目标共享 90% 的核心数据模型,并拥有少量与每个目标专门相关的独特实体。
我正在寻找如何处理具有规范的共享模型的想法。 我能想到几个选项 -
-
为每个模型创建一个不同的模型(我们希望避免这种情况)
为共享实体创建 1 个模型,为每个目标创建一个模型(但据我了解,我们会遇到关系问题)
为每个应用的不同用途创建 1 个具有抽象父实体和子实体的模型。
我正在寻找已经遇到此问题的人的更多想法或建议。
谢谢
【问题讨论】:
嗨。两种模式的方法在迁移方面存在很大问题。当您的应用程序中有两个模型时,轻量级迁移不起作用(coredata 错误)。我有几个建议:1)一个大的共享模型加上每个应用程序在共享模型中都有一些额外的实体,具有自己的命名 2).xccoredata
文件内部包含xml
.. 可以编写脚本这将在编译阶段之前将共享模型与附加模型合并。 3)如果附加实体的数量不大,您可以通过nsuserdefaults
+ 自己的包装器来实现。
【参考方案1】:
听起来您想使用一种模型,但为不同的应用使用不同的配置名称。
在 Core Data 模型编辑器中,您可以创建多个配置。配置只是模型的一个命名子集,它包含数据模型中的一些但不一定是所有实体。
当您的应用设置其核心数据堆栈时,对addPersistentStoreWithType:configuration:URL:options:error:
的调用具有第二个参数configuration
。从您的数据模型中传入其中一个配置名称,您只能获得该模型的子集。
【讨论】:
看起来不错,自动迁移是否适用于配置作为默认配置(将来添加和删除实体)?,谢谢 规则不会改变——重要的是用于现有数据文件的模型与新版本的模型相比如何。如果lightweight migration can handle those differences,你就准备好了。以上是关于核心数据 - 与目标规范共享模型?的主要内容,如果未能解决你的问题,请参考以下文章