ModelExtension
在NSManagedObjectModel
上提供了一个类别,以支持通过在另一文件中定义的模型扩展在一个文件中定义的模型。
ModelExtension
除了对CoreData
的明显需求外,没有其他要求。
通过在基模型上调用-[NSManagedObjectModel modelByExtendingWithModels:]
方法,并传入子模型的数组来创建一个扩展模型。此方法返回一个新的组合模型。
// Get the base model and the extension
NSManagedObjectModel *model = …
NSManagedObjectModel *subModel = …
// Create an extended model
NSManagedObjectModel *extendedModel = [model modelByExtendingWithModels:@[subModel]];
通过将子模型中的抽象实体替换为基模型中的具体实体来完成扩展。要扩展基模型中的实体,必须在子模型中创建一个具有相同名称的抽象实体。此抽象实体必须没有任何属性。
以下示例展示了具有Collection和Item实体的模型……
……和一个具有实体ExtendedCollection的子模型,该实体应成为Collection的子实体。
调用-[NSManagedObjectModel modelByExtendingWithModels:]
将返回一个模型,将基模型中的Collection实体设置为子模型中ExtendedCollection实体的超实体。
Tobias Kräntzer,[email protected]
版权(c)2014,Tobias Kräntzer 保留所有权利。
根据以下条件,允许分发和使用源代码和二进制形式,无论是修改还是未经修改:
源代码的分发必须保留上述版权声明、本条件列表和以下免责声明。
二进制形式的分发必须复制上述版权声明、本条件列表和以下免责声明到随分发提供的文档和/或其他材料中。
未经事先书面许可,不得使用版权持有者或其贡献者的姓名来表示或推广从本软件派生的产品。
本软件由版权所有者和贡献者提供“现状”,并不提供任何明示或暗示的保证,包括但不限于适销性保证和特定用途适用性保证。在任何情况下,版权所有者或贡献者均不对因使用本软件而引起的任何直接、间接、偶然、特殊、示范性质或后果性损害(包括但不限于替代货物或服务的采购;使用、数据或利润的损失;或业务中断)承担责任,即使已被告知此类损害的可能性。