2011-03-04 38 views
9

我创建了一个项目,不检查“使用CoreData”。项目名称是“词汇表”URLForResource送花儿给人返回nil

现在我改变了主意,因此我添加了一个数据模型usinng Add-> New File-> Resource-> Data Model->给它起名字Glossary-> didn`t select任何类 - >完成。

下一步是设计我的数据模型。然后我将所需的代码添加到我的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参考,并呼吁mainBundle让我发现,这是工作,但是我不知道它是否真的是正确的道路。

在创建项目时选择“使用CoreData”的项目也同样如此。

有任何人的想法?

回答

0

我不是100%确定,但是URLForResource只对文件有效,momd是目录。

URLForResource文档:该方法首先在指定包的非本地化资源目录中查找匹配资源文件。 (在Mac OS X中,此目录通常称为资源,但在iOS中,它是主包目录。)如果找不到匹配的资源文件,则它会查找任何可用语言特定的顶级。 lproj“目录。 (特定语言的目录搜索顺序对应于用户的偏好。)不通过其他子目录在这些位置的递归。有关更多详细信息,请参阅Bundles和Localization。

+0

是的,这已经是红色了,但正如我在教程中发现了这条线,并且当我编写使用核心数据进行存储时创建项目时,它工作正常。所以妈妈不应该是一个目录。我试图在Finder中搜索momd,但发现者hasen't发现任何东西(没有目录或文件)。那么对我来说那是很奇怪的:) – Jonas 2011-03-04 20:12:58

+0

哎哟,我的错误,我刚刚更换momd与.xcdatamodel [d]在我的脑海里,很抱歉的混乱。 – robertvojta 2011-03-04 20:19:58

11

它与model versioning有关。你想添加一个版本模型(项目在Xcode项目树将有.xcdatamodeld扩展名),那么你的代码将平稳运行。

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

如果您不打算购买型号版本,只需在您的代码中使用.mom即可。

+0

是的!谢谢!我今天被困在那个3小时。我不想为我已经为OS X创建的应用的iOS版本创建新模型,因此我在我的新iOS应用程序中选中了“使用核心数据”,然后抛出xcdatamodeld文件并将其替换与我的旧OS X应用程序的xcdatamodel。如果苹果公司选择较少的蹩脚扩展来使差异更明显,那将会很好。 – ArtOfWarfare 2013-04-11 22:45:28