【问题标题】:xcode 8.2 swift 3 Core data -- use unresolved identifierxcode 8.2 swift 3 核心数据——使用未解析的标识符
【发布时间】:2017-06-01 10:52:19
【问题描述】:

我在 xcode 8.2 中创建了一个核心数据项目,之后我在 .xcdatamodeld 中创建了一个实体说“TestEntity”

我正在使用 swift3 的一些教程中给出的以下代码来创建实体对象。 enter link description here

    let appDele = (UIApplication.shared.delegate) as! AppDelegate
    let cont = appDele.persistentContainer.viewContext

    let ent  = TestEntity(context:cont)

但我收到一个错误“使用未解析的标识符 'TestEntity'。”

如何解决该错误。

【问题讨论】:

  • 你是否从编辑器菜单中生成了 NSManagedObject 子类?
  • @VinayJain 生成 NSManagedObject 的子类在 swift3 中关闭。不再需要它。对此进行一些研发。

标签: ios swift swift3 xcode8.2


【解决方案1】:

Product->Buld for testing 为我解决了这个问题(由于某些奇怪的原因,它解决了大多数未解决的标识符错误)

【讨论】:

  • 天哪。谢谢。
  • 构建项目显然是解决项目中文件之间的引用所必需的。无论如何,这是一个“软”错误,这意味着它只是编辑器中的一个错误,而不是一个“硬”构建错误。
  • 对于其他人:有时您需要创建 NSManagedObjectSubclasses 以覆盖或将自定义部分写入类。对于对象中的声明就足够的情况,您不需要这样做。在发生此错误的这种情况下,JP Aquino 对 Build For -> Test 的回答有效,并且可能是对问题的正确响应。
【解决方案2】:

我通过改变解决了它 import Foundationimport UIKit

因为UIApplication 不包含在Foundation 框架中。

【讨论】:

  • 这是正确的。不过奇怪的是,我有两个项目,一个不需要导入 UIKit,另一个需要。
【解决方案3】:

“使用未解析的标识符'TestEntity'。”表示您正在尝试使用无处声明的类/结构。可能您需要为您的实体生成 NSManagedObjects。

【讨论】:

  • 在 XCode 8.2 和 swift3 中不需要创建 NSManagedObjectSubClass。
  • Giuseppe Lanza 研究了 swift 3 中的核心数据。Swift 3 对核心数据进行了一些更改。不要走旧逻辑
  • stackoverflow.com/a/37905573/1754559 默认行为是上一个。
  • 我知道这是默认行为,但我们需要继续更新内容。在 swift3 中它不是必需的。而你所说的,当我学习目标 C 和 Xcode5 时,我就是这样做的。在投反对票之前,您需要了解问题所在..
  • 你现在有没有尝试做同样的事情?我完全确定生成子类可以解决您的问题。检查我之前发布的链接。它是最新的。默认行为是前一种行为:您必须手动生成子类。这是唯一可能的解释 Raj。未解析的实体:该类未在任何地方定义。随心所欲地投反对票,仅此而已。
【解决方案4】:

尝试以下方法:

  1. 将实体添加到 CoreData 文件后清理并构建项目
  2. 删除实体并重新创建 - 重做第 1 步
  3. 关闭并重新打开 xcode - 重做第 1 步和第 2 步
  4. 将 xcode 更新到最新版本(对我有用)并重做第 1,2 和 3 步

我不能告诉你是什么解决了这个问题。但我很高兴它现在可以工作了!

【讨论】:

    【解决方案5】:

    关闭 Xcode 并重新打开它对我有用。

    【讨论】:

      【解决方案6】:

      就我而言,这是因为我在 .xcdatamodeld 文件中重命名了实体。

      但在侧边菜单中重命名实体仅适用于 Name 属性,不适用于 Class Name。在数据模型检查器中重命名类名后,它工作了。

      【讨论】:

        【解决方案7】:

        刚刚遇到了同样的问题,使用 Xcode 生成的托管对象子类。从 Xcode 项目中删除了引用并重新添加了它们。问题消失了。

        【讨论】:

          【解决方案8】:

          import Foundation改成import UIKit看看,如果出现同样的问题,关闭Xcode再重新打开就可以了

          【讨论】:

          • 我认为这是 Xcode 的缺陷,这对我来说发生了很多次。当您多次运行和构建您的应用程序并添加更多 swift 文件时,Xcode 无法识别或从正确的文件中找到标识符。就像,有时 Xcode 不会显示自动补全,唯一的解决方案是“关闭并重新打开”Xcode。
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-03-25
          • 1970-01-01
          • 2016-04-29
          相关资源
          最近更新 更多