Objective c CoreData:不同项目中公共基础实体的不同子类

Objective c CoreData:不同项目中公共基础实体的不同子类,objective-c,xcode,core-data,Objective C,Xcode,Core Data,我有一个通用的模型框架,其中包含一些实体和关系,我希望用于各种应用程序。对于每个应用程序,我想在其中一个实体上定义一组特定的属性。我认为每个应用程序都可以定义一个实体,它是基本实体的子实体,但如果子实体位于不同的模型文件中,则似乎不能这样做。如果我将所有子实体放在同一个模型文件中,那么每个应用程序中的实体最终都将具有所有应用程序的属性 在这一点上,我唯一的解决方案是只使用基本实体,并将其属性设置为字典。然后,每个应用程序都可以编写NSManagedObject的子类,该子类定义在字典中查找适当值

我有一个通用的模型框架,其中包含一些实体和关系,我希望用于各种应用程序。对于每个应用程序,我想在其中一个实体上定义一组特定的属性。我认为每个应用程序都可以定义一个实体,它是基本实体的子实体,但如果子实体位于不同的模型文件中,则似乎不能这样做。如果我将所有子实体放在同一个模型文件中,那么每个应用程序中的实体最终都将具有所有应用程序的属性

在这一点上,我唯一的解决方案是只使用基本实体,并将其属性设置为字典。然后,每个应用程序都可以编写NSManagedObject的子类,该子类定义在字典中查找适当值的属性。我认为这可能会有性能问题


关于我的字典方法还有其他想法吗?谢谢

当我发布这篇文章时,我没有意识到的一件事是,您可以通过编程方式修改模型。所以我开始在每个子项目中这样做,以添加具有项目特定属性的子实体。这在一段时间内解决了这个问题

然而,模型迁移是一个问题。我认为,如果我在基本项目的模型文件中更改了某些内容,我将能够使用自动迁移或映射文件来迁移子项目创建的任何数据存储。然而,由于子项目修改了模型,我不得不加载旧模型,修改它,加载新模型,修改它,然后在这两个模型之间执行迁移


所有这一切都是一件痛苦的事情,因此我最终使用通用对象、属性和值表将我的DB模式更改为更灵活的模式。现在,每个子项目都可以插入任何数据来定义一种新的对象。

我也有同样的问题。。。我有一个基类,它定义了两个CD实体共有的属性和功能。但是当我试图从超类访问一个值时,我得到了一个错误

下面是我为解决这个问题所做的

创建数据模型,并按照通常的方式生成类。手动创建超类,作为NSManagedObject的子类。为它提供与生成的类相同的结构,这意味着没有声明的变量,使用@dynamic、NSNumber*表示数字,等等

这对我来说是个好办法