【问题标题】:Core data: Unable to load class named "CDAccount"核心数据:无法加载名为“CDAccount”的类
【发布时间】:2014-11-07 06:40:09
【问题描述】:

我最近下载了 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,我的应用程序将无法正常运行!

【问题讨论】:

  • 对此不确定,但您确定您的班级是您正在构建的目标的成员吗?
  • 您是否在应用程序中使用社交或帐户框架? Accounts 框架在内部使用 Core Data,如果内存为 CDAccount 服务,则它是在公共接口中支持 ACAccount 对象的 Core Data 实体。
  • 哦,真的吗?你能把我链接到文档吗?我没找到。
  • 出于不同原因的相同问题。创建数据库后,我重命名了该类。它是 Books,我将其重命名为 Book。引起了警告,但应用运行良好。

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


【解决方案1】:

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

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

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

【讨论】:

  • 我的对象已经在编译源中,我仍然在 Xcode 6 中收到错误
  • @PostCodeism,请参阅 Lucien 发布的相关答案。它对我有用:stackoverflow.com/questions/25076276/…
  • 这解决了我的问题。但是,我没有使用 Build Phases 添加源代码,而是单击了已在项目中作为文件列出的 .m 文件,然后检查了 Utilities 面板 > File Inspector 下的 Target Membership。为什么 XCode 删除了 .m 文件是完全奇怪的。也许从一开始就没有添加。 .m 文件中除了一些 @dynamic 语句之外没有太多内容。
【解决方案2】:

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

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

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

如果对您的应用名称有疑问,请检查“构建设置”下的“product_module_name”过滤器,您会在“打包”下找到您的应用名称

  • 在某些情况下(我的情况),Xcode 也会从项目中删除数据模型文件(swift 或 Objective-c)——尽管它仍在磁盘上,但您需要再次添加它。因此,在这种情况下,获取“CDAccount.m”文件并再次将其放入您的项目中(或使用多种方法中的另一种)

【讨论】:

    【解决方案3】:

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



    到:


    重建应用程序。

    【讨论】:

    • 谢谢。我尝试了所有其他修复(这些都可以在关于 SO 的许多不同但类似的问题中轻松找到。经过数小时的头痛终于解决了我的问题。
    • 对我来说添加点有帮助。
    【解决方案4】:

    我的问题类似,但列出的解决方案不起作用,因为我的 CD 类存储在框架中。解决方案是将类名表示更改为“frameworkName.className”。但是,xcdatamodeld 不允许我更改它,所以我必须在文件上“显示内容”,在 XCode 中打开“内容”文件,然后自己进行更改。

    【讨论】:

      【解决方案5】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-03-01
        • 1970-01-01
        相关资源
        最近更新 更多