找不到类,使用默认的NSManagedObject来代替

我在IOS 8的核心数据有问题。每当我想使用insertNewObjectForEntityForName方法,我得到

找不到类,使用默认的NSManagedObject来代替。

错误信息。 我使用Objective-C,而我没有使用IOS 7这个问题。也可以有任何问题,因为在我的工作区有两个项目,其中一个包含有关代码的核心数据,另一个UI。

该错误意味着您已经在模型编辑器中为实体typesconfiguration了一个自定义类名,但是该类在运行时不存在。 核心数据使用实体types创build一个通用的NSManagedObject

假设类文件实际上存在于某个地方,问题在于你没有在Xcode的应用程序目标中包含该文件。 由于Xcode支持多个目标,项目等,它不会自动在每个构build中包含每个源文件。 将Core Data子类文件添加到应用程序目标中,此错误应该消失。

当使用Swift时,如果源文件包含在“ 构build阶段”>“编译源”中 ,错误仍可能出现

无法为实体“…”加载名为“…”的类。 类找不到,使用默认的nsmanagedobject来代替。

为了解决这个问题,你可以在模型检查器(在这里是MyApp )中添加特定的模型类。 另见文件 。

在这里输入图像说明

我们可以在swift类声明之前添加objc(Person)

 @objc(Person) class Person: NSManagedObject { ... } 

这是@ High6提供的答案的更新版本

从Xcode 7开始,有一个Module属性可以设置为Current Product Module (它自动出现),所以你不需要使用前缀。

Xcode核心数据编辑器

这个问题有类似的答案。 在我的情况下,我正在使用Objective-C,并在控制台中摆脱了这个错误。

我在这里find答案: 无法findNSManagedObject的特定子类

您可以清空“模块”字段(它将显示“无”),并用@objc(classname)标记托pipe对象的子类

在这里输入图像说明 这为我修好了。

如果您使用Xcode 7 beta,实际的解决scheme是删除 @objc(Person) 。 必须是用于在Xcode 7testing版中生成实体类的模板中的一个错误。

当没有解决scheme为我工作,我删除了现有的NSManagedObject并创build一个新的。 如果需要以前对象的任何代码,请记住备份,然后将其复制到新的NSManagedObject类中。 希望这有助于某人。