【问题标题】:Swift 3 Core Data "Entity" error: `Use of undeclared type`Swift 3 核心数据“实体”错误:`使用未声明的类型`
【发布时间】:2017-02-17 11:39:42
【问题描述】:

Use of undeclared type 'Transcription'

我正在关注这个简单的 Swift 3 核心数据教程 (https://learnappdevelopment.com/uncategorized/how-to-use-core-data-in-ios-10-swift-3/)

我就得到了上面的错误:let fetchRequest: NSFetchRequest<Transcription> = Transcription.fetchRequest()

我仔细检查了,实体“转录”在我的 .xcdatamodeld 文件中拼写正确

本教程是为 Swift 3 设计的,但是自从它发布以来我修复了另一个更改,所以我猜测过去 2 个月对 Swift 的其他一些更改导致了这个错误。

我是 Core Data 的新手,所以我不知道如何调试它。非常感谢您的解决方案!

【问题讨论】:

  • 将 CoreData 导入您的班级

标签: ios xcode core-data swift3 xcode8


【解决方案1】:

不要忘记import CoreData 到你的子类

【讨论】:

    【解决方案2】:

    这可能是因为 Xcode 无法确定.xcdatamodel 的路径,清理项目时可以看到相关错误。当更改.xcdatamodel 的名称 时,此错误发生在我的一个项目中。

    决议涉及以下内容:

    • 转到 产品 -> 清洁 (Shift-Cmd-K)
    • 如果错误仍然存​​在
      • Ctrl-单击(右键单击) 有问题的.xcdatamodel -> 在 Finder 中显示
      • 拖动 .xcdatamodel 导入到项目中,应该会创建一个新条目
      • 删除之前的 .xcdatamodel 条目。
    • 构建 (Cmd-B) 以确认修复

    【讨论】:

    • 如果您在 Xcode 中遇到描述的错误,请尝试构建项目。如果构建成功,执行上述方法,Xcode 中的错误将被删除!
    • 这解决了我的问题,谢谢!你知道什么会导致这种情况吗?
    【解决方案3】:

    我也遇到过同样的错误,我用的是 Xcode 8.2.1 。我清理了项目,关闭了Xcode并重新打开它,构建后错误消除了。

    【讨论】:

      【解决方案4】:

      突出显示数据模型,转到编辑器 -> 创建 NSManagedObject 子类...

      这解决了错误

      【讨论】:

      • 伟大的 PlateReverb,
      • 我对我的实体 Quote 进行了尝试,然后我开始收到“'Quote' 的重新声明无效。我使用的是 Xcode 8.3
      【解决方案5】:

      就我而言,Xcode 没有找到自动生成的类,类似于:

      //
      //  Teste+CoreDataClass.swift
      //  
      //
      //  Created by Laura Corssac on 2/2/20.
      //
      //  This file was automatically generated and should not be edited.
      //
      
      import Foundation
      import CoreData
      
      @objc(Teste)
      public class Teste: NSManagedObject { }
      
      

      退出Xcode后重新打开,我的问题就解决了。

      【讨论】:

        【解决方案6】:

        使用 Xcode 版本 8.2 beta (8C30a),当我添加或修改实体时,我得到同样的错误。在数据模型检查器中,将 Codegen 选项改回 Manual/None,就好像我要自己生成动态类一样。保存,然后改回类别/扩展,它似乎工作。 (我也曾尝试使用 Option-Clean 清理项目,重新启动 XCode,但能够轻松重现它。)希望升级 8.3 beta 修复此错误。

        【讨论】:

        【解决方案7】:

        没有。 1)我们创建子类,去Editor -> Create NSManagedObject Subclass... 然后将子类文件替换到同一个项目的文件夹中:

        2) 然后删除 derivedData 中的文件 - 在 Xcode 中 -> 首选项:

        3) 然后删除对 NSManagedObject 子类的旧文件的引用,因为它们会自动创建系统:

        【讨论】:

          【解决方案8】:

          对我来说,我必须从我的 .xcdatamodeld 文件中删除给我带来错误的实体(在您的情况下为“转录”),然后手动重新添加。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2018-11-16
            • 1970-01-01
            • 1970-01-01
            • 2014-04-12
            • 1970-01-01
            • 1970-01-01
            • 2015-10-28
            相关资源
            最近更新 更多