核心数据:无法加载名为“CDAccount”的类

时间:2014-09-13 02:18:03

标签: ios objective-c core-data ios8 nsmanagedobject

我最近下载了iOS 8以确保我现有的应用程序正常运行,但我在发布时在调试器中收到警告:

"CoreData: warning: Unable to load class named 'CDAccount' for entity 'CDAccount'.  
Class not found, using default NSManagedObject instead."

经过一些研究,似乎人们在Swift中使用Core Data时遇到了类似的问题,但我的所有代码都在Objective-C中(并且数据模型至少在6个月内没有变化)。

非常感谢任何建议,一旦人们开始升级到iOS 8,我的应用程序无法正常运行,我真的很紧张!

5 个答案:

答案 0 :(得分:18)

我在Objective-C和Xcode 6中遇到了完全相同的问题。出于某种原因,Xcode从我的编译源中删除了我的' CustomNSManagedObject' .m类。

转到您的项目目标 - >构建阶段 - >编译源并使用+按钮添加CDAccount.m

如果您使用Mogenerator创建_CDAccount.m文件,请将其添加到您的编译源。

答案 1 :(得分:8)

删除.xcdatamodeld上配置“默认”中的“点”:

enter image description here

至:
enter image description here
enter image description here
重建应用程序。

答案 2 :(得分:3)

这似乎是一个Xcode错误/问题。我正在使用Xcode 6.3.1

  • 单击您的核心数据实体(xxx.xcdatamodeld),然后选择实体,并在属性检查器中,您将看到实体的类名称设置为: PRODUCT_MODULE_NAME.xxx,其中' xxx'是你的实体的名字。

解决方案:您必须将PRODUCT_MODULE_NAME替换为您应用的名称。

如果对您的应用名称有疑问,请在“制作设置”下进行检查,过滤“&product.dmodule_name'”,然后在“&”下找到您的应用名称。 #39;包装'

  • 在某些情况下(我的情况),Xcode也会从项目中删除数据模型文件(swift或objective-c) - 但它仍然在磁盘上,但是你需要再次添加它。所以在这种情况下,请使用CDAccount.m'档案&再次将它放入您的项目中(或使用其他几种方法)

答案 3 :(得分:3)

我的问题也很相似,但原因是没有设置实体模块。

module selection in Entity properties menu

答案 4 :(得分:1)

我的问题很相似,但列出的解决方案并不起作用,因为我的CD类存储在一个框架中。解决方案是将类名表示更改为" frameworkName.className"。但是,xcdatamodeld并不允许我将其更改为,所以我必须"显示内容"在文件上,打开"内容"在XCode中生成文件,并自行进行更改。