IOS 8中的核心数据存在问题。每当我想使用insertNewObjectForEntityForName
方法时,我都会得到
未找到类,而是使用默认的NSManagedObject。
错误讯息。我使用objective-c,我没有使用IOS 7这个问题。也可能有任何问题,因为在我的工作区有两个项目,一个包含核心数据相关代码,另一个包含UI。
答案 0 :(得分:30)
使用Swift时,如果源文件包含在 Build Phases>中,则仍然会出现错误。编译源错误
无法加载名为' ...'对于实体' ...'。 找不到类,而是使用默认的nsmanagedobject。
要解决此问题,您可以在模型检查器中为特定模型类添加前缀(此处使用 MyApp )。 See also the documentation
我们可以在快速类声明之前添加objc(Person)
@objc(Person)
class Person: NSManagedObject {
...
}
答案 1 :(得分:21)
答案 2 :(得分:13)
该错误意味着您已在模型编辑器中为实体类型配置了自定义类名,但该类在运行时不存在。核心数据依赖于使用实体类型创建通用NSManagedObject
。
假设类文件实际存在于某处,问题是您没有在Xcode中的应用程序目标中包含该文件。由于Xcode支持多个目标,项目等,因此它不会自动包含每个构建中的每个源文件。将Core Data子类文件添加到应用程序目标,此错误应该消失。
答案 3 :(得分:13)
这个问题有一个类似的答案。在我的情况下,我使用的是Objective-C,并在控制台中解决了这个错误。
我在这里找到答案:Unable to find specific subclass of NSManagedObject
您可以清空“模块”字段(它将显示“无”)并使用@objc(类名)标记托管对象子类
答案 4 :(得分:9)
如果您使用的是Xcode 7测试版,实际的解决方案是删除 @objc(Person)
。必须是模板中用于在Xcode 7 beta中生成实体类的错误。
答案 5 :(得分:0)
当没有一个解决方案适合我时,我删除了现有的解决方案 NSManagedObject并创建了一个新的。如果需要上一个对象中的任何代码,请记住进行备份,然后将其复制到新的NSManagedObject类中。 希望这有助于某人。
答案 6 :(得分:0)
SPM 有这个问题。
我的模型正在从 Bundle.module 加载。但是在运行时尝试访问它们时找不到任何类