我创建了一个项目而没有检查“使用CoreData”。项目名称是“词汇表”
现在我改变了主意,因此我添加了一个数据模型,使用Add-> New File-> Resource-> Data Model->给它命名Glossary-> didn`t选择任何类 - >完成。
下一步是设计我的数据模型。 然后我将所需的代码添加到我的AppDelegate。 对于所有步骤,我遵循本教程: https://developer.apple.com/library/ios/#documentation/DataManagement/Conceptual/iPhoneCoreData01/Introduction/Introduction.html%23//apple_ref/doc/uid/TP40008305-CH1-SW1
我现在的问题是这一行:
NSURL *modelURL = [[NSBundle mainBundle] URLForResource:@"glossary" withExtension:@"momd"]
modelURL永远是nill 创建一个额外的NSBundle Ref并调用mainBundle告诉我这是有效的,但是我不知道它是否真的是正确的路径。
在创建作品时,选择“使用CoreData”的项目执行相同的步骤。
有人有想法吗?
答案 0 :(得分:11)
它与model versioning有关。您想要添加版本化模型(Xcode项目树中的项目将具有.xcdatamodeld
扩展名),然后您的代码将顺利运行。
在Xcode 4中添加新的Core Data文件时,默认情况下会对其进行版本控制。即使您在项目创建后添加了Core Data支持。
如果您不打算拥有型号版本,请在代码中使用.mom
。
答案 1 :(得分:0)
我不是100%肯定,但URLForResource仅适用于文件,momd
是目录。
URLForResource文档:该方法首先在指定包的非本地化资源目录中查找匹配的资源文件。 (在Mac OS X中,此目录通常称为资源,但在iOS中,它是主要的捆绑目录。)如果找不到匹配的资源文件,则它会查找任何可用的顶级语言特定的“.lproj”目录。 (特定于语言的目录的搜索顺序对应于用户的首选项。)它不会通过任何这些位置的其他子目录进行递归。有关更多详细信息,请参阅分发包和本地化。