URLForResource总是返回nil

Jon*_*nas 9 iphone objective-c ios

我创建了一个项目而没有检查"使用CoreData".项目名称是"词汇表"

现在我改变了主意,因此我添加了一个数据模型,使用Add-> New File-> Resource-> Data Model->给它命名Glossary-> didn`t选择任何class-> Finish.

下一步是设计我的数据模型.然后我将所需的代码添加到我的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"]
Run Code Online (Sandbox Code Playgroud)

modelURL永远是nill创建一个额外的NSBundle Ref并且调用mainBundle告诉我这是有效的,但是我不知道它是否真的是正确的路径.

在创建工作时选择"使用CoreData"的项目上执行相同的步骤.

有人有想法吗?

djr*_*ero 11

它与模型版本控制有关.您想要添加版本化模型(Xcode项目树中的项目将具有.xcdatamodeld扩展名),然后您的代码将顺利运行.

在Xcode 4中添加新的Core Data文件时,默认情况下会对其进行版本控制.即使您在项目创建后添加了Core Data支持.

如果您不打算使用模型版本,只需.mom在代码中使用即可.


zrz*_*zka 0

我不是 100% 确定,但 URLForResource 仅适用于文件并且momd是目录。

\n\n

URLForResource 文档:该方法首先在指定包的非本地化资源目录中查找匹配的资源文件。(在 Mac OS X 中,此目录通常称为 Resources,但在 iOS 中,它是主捆绑包目录。)如果未找到匹配的资源文件则会在任何可用的特定于语言的 \xe2\x80 的顶层进行查找\x9c.lproj\xe2\x80\x9d 目录。(特定于语言的目录的搜索顺序对应于 user\xe2\x80\x99s 首选项。)它不会递归通过任何这些位置的其他子目录。有关更多详细信息,请参阅捆绑包和本地化。

\n