如何将核心数据模型纳入框架?

时间:2011-11-09 15:53:27

标签: file core-data static package

我为我的核心数据项目创建了一个框架,用于解析核心数据并将其存储到核心数据中。我想打包这个框架,这样每当我想再次解析这个feed我就可以把框架拖到另一个项目中。但是,当我尝试将我的框架拖到另一个项目时,新项目无法找到Core Data模型(即使我已将其包含在框架中)。

我发现如果我在框架中包含核心数据模型,然后将Core Data Model文件(有一个名为DataModel.xcdatamodeld,另一个名为DataModel.xcdatamodel)拖到我的新项目中,项目就可以找到核心数据模型,并按预期解析和存储数据......附加了一些图片来说明我必须在我的框架中包含的两个数据模型以及我必须拖入新项目的两个模型。

任何人都可以解释为什么这有效吗?我需要拥有两个数据模型副本似乎是正确的,一个在框架中,另一个在项目框架中工作...无论如何我可以打包整个核心数据并解析项目与数据模型,所以我可以将其拖入另一个项目?这将包括下面列出的所有这些文件:

由于

1 个答案:

答案 0 :(得分:1)

我可以请您发布一段代码,用于实例化模型的核心数据堆栈吗? 如果代码使用主包来获取模型资源(许多简单的核心数据示例都这样做),那么它将无法工作,因为模型资源位于框架内(在您的情况下不是主包)。你必须使用这样的东西来初始化你的模型:

+ (NSManagedObjectModel*)createModelForClass:(Class)modelClass
{
    NSManagedObjectModel *model = 
    [NSManagedObjectModel mergedModelFromBundles: 
     [NSArray arrayWithObject: [NSBundle bundleForClass: modelClass]]];
    NSAssert(model != nil, @"Unable to initialize a data model");    
    return model;
}

您传递框架中定义的任何类型的类。我通常创建一个类作为框架中定义的模型的外观/伞,并在调用上述方法时使用它。