2012-06-16 55 views
0

我正在更新使用CoreData的应用程序。在完整版本中,我使用户可以将他/她自己的数据保存在数据库中(应用程序填充预先填充的数据库)。CoreData模型无法正常工作

该应用程序是在Xcode 4.2上编写的,并且具有iOS 4.1的部署目标,所以在ARC和Storyboard之前。

现在我想稍微更新一下,将部署目标设置为5.1并将代码调整为最新的Xcode,因此实现了Storyboard和ARC,因为我现在习惯了它,并且我发现它更直观这段代码。 因此,我从头开始一个新项目,构建故事板,并从1.0版本中拖动大部分内容。此外,我已经检查了“构建阶段”选项卡上的“编译源”和“复制包资源”是否正常,并包含我拖动的所有内容。

但是,我遇到了数据库问题。当我尝试运行应用程序它崩溃告诉我:

'Cannot create an NSPersistentStoreCoordinator with a nil model' 

所以我不知道我在做什么错在这里。我不想更改CoreData模型,因为一切都保持不变,我没有添加或删除任何实体或属性。所以我认为只要将旧的modeld拖到新的项目就足够了。

此处有任何建议吗?我可以很容易地从头开始编写整个codeData的东西,因为它并不是很复杂,但我相信用户在创建完整版本并保存自定义数据时会非常烦恼。

任何建议将非常欢迎。提前致谢!

+0

我认为你需要验证永久存储路径是否正确。看看这个答案从“afrederick”:http://stackoverflow.com/questions/8804541/cannot-create-an-nspersistentstorecoordinator-with-a-nil-model-error –

回答

0

你需要检查你的AppDelegate方法managedObjectModel。确保它检索模型(与NSLog声明一起检查)。最有可能与一些命名约定做:

NSString *modelPath = [[NSBundle mainBundle] 
    pathForResource:@"Model" ofType:@"momd"]; 
NSURL *modelURL = [NSURL fileURLWithPath:modelPath]; 

检查专门为您modelPath

此外,可能发生的情况是,当您导入模型时,并未真正导入所有文件。该模型实际上是一个名为YourModel.xcdatamodeld的目录,其中最终的d可能代表“目录”。在Finder中,您可以右键单击并选择Show Package Contents以确保所需的文件在那里(甚至可以更好地使用命令行)。里面应该有一个叫做YourModel.xcdatamodel的文件(没有d)。在方面,至少应该有一个文件叫做content(有时也是layout)。它是一个简单的XML文件。

确保您已将所有这些项目导入到您的项目中!

+0

不久后我发布了我的问题注意到Xcode编辑器顶部的路径显示了两种数据模型的不同之处。在“老”它显示了一个进一步的文件,所以我想检查包的内容。我已经做了1:1的副本,它工作得很好。 – Marcal