【问题标题】:Xcode 8.3 Core Data "use of undeclared type" errorXcode 8.3 Core Data“使用未声明的类型”错误
【发布时间】:2018-02-02 22:54:25
【问题描述】:

更新到 Xcode 8.3(以及随后的 8.3.2)后,我的应用程序继续构建,但代码完成已完全中断。

据我所知,Xcode 根本无法识别我的 Core Data 类,但出于某种原因,构建仍然成功完成,并且应用程序本身可以像以前一样工作。结果是我有大量的use of undeclared type: [entity name] 错误,并且代码完成不再起作用。

这是我尝试解决的问题。

  • 从头开始删除 Core Data 模型并重新配置它。
  • 清理构建文件夹
  • 手动删除 DerivedData 文件夹
  • 关闭/重新打开 xcode
  • 哭一点,但只是在内心
  • 将 Codegen 设置从 Class Definition 更改为 Category/Extension,构建,然后重置,同时进行清理和手动删除 DerivedData 文件夹
  • 验证模型文件的目标是否正确设置
  • import CoreData 添加到每个包含对模型类的引用的文件中
  • 创建实体的虚拟类,这会破坏构建并且原来的 undeclared 错误被替换为 invalid redeclaration of [entity name]
  • 将所有实体Module 设置更新为Current Product Module
  • 清理项目,清理构建文件夹,删除派生数据文件夹,重新启动 xcode,构建,按此顺序。

我确信这是 Xcode 的一个错误,但我希望有一种方法可以在不等待苹果的情况下解决这个问题。

【问题讨论】:

  • 您是否保存了模型更改?型号名称是什么?我的意思是实体名称
  • 您从哪个版本的 Xcode / Swift 升级?您是否验证了实体类文件的目标成员资格?您是否在主要目标或测试目标或两者中都遇到错误?
  • 您是否尝试过清理项目、构建文件夹和派生数据,而不在两者之间进行构建?如果没有,则尝试依次执行所有三个并重新启动 Xcode,然后构建。
  • 你能添加错误的图像吗?如果有帮助,还要检查一下:stackoverflow.com/questions/43178089/…
  • @MikeTaverne 从 8.2.1 升级到 8.3(问题开始时),然后从 8.3 升级到 8.3.2。我将如何验证类文件的成员身份?我可以验证模型的成员身份,但模型管理这些类文件。我拥有的唯一文件是类的扩展。

标签: ios swift xcode core-data


【解决方案1】:

此问题的操作解决方案是将所有实体的Codegen 选项设置为Manual/None 并手动创建/维护类,这很糟糕。为了让这更容易,我所做的是构建,转到 DerivedData 文件夹并找到 xcode 自动创建的类,然后将这些文件添加到项目中。

【讨论】:

    【解决方案2】:

    我遇到了完全相同的问题。我也尝试了一切来摆脱它,但错误仍然存​​在。所以我删除了应用程序中的 Xcode、所有日志和所有用户数据并重新安装了它。现在一切都再次完美运行。它不是最优的,但再次拥有一个正常运行的 Xcode 真是太好了。

    【讨论】:

      【解决方案3】:

      这不是与核心数据相关的问题——我在全新的 8.3 Swift 应用程序中遇到了同样的问题(即,不是从 Xcode 8.2 或更早版本迁移而来),我使用的唯一框架是 UIKit 和 AVFoundation .

      有趣的是,Xcode 卡在 AppDelegate 的第一行:

      private var appDelegate: AppDelegate = UIApplication.shared.delegate as! AppDelegate
      

      这一行给出了未声明的类型错误。但是,应用程序构建和运行都很好,所以这里真的没有问题。

      【讨论】:

      • 这不是 CoreData 的问题,但与它有关。这个答案实际上并没有解决任何问题。如果编辑器中有错误,但它可以构建,并且代码完成不再起作用,那就是一个问题。
      猜你喜欢
      • 1970-01-01
      • 2017-05-17
      • 2018-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多