使用框架中的CoreData时如何解决“类'ClassName'的NSManagedObject必须具有有效的NSEntityDescription”
Posted
技术标签:
【中文标题】使用框架中的CoreData时如何解决“类\'ClassName\'的NSManagedObject必须具有有效的NSEntityDescription”【英文标题】:How to fix "An NSManagedObject of class 'ClassName' must have a valid NSEntityDescription" when using CoreData from a framework使用框架中的CoreData时如何解决“类'ClassName'的NSManagedObject必须具有有效的NSEntityDescription” 【发布时间】:2018-02-14 15:39:25 【问题描述】:我在一个框架中分离了我的数据访问层 (DAL),以便能够在应用程序及其 Today 小部件中使用它。我设置了所有内容并编译了它,但在运行时当我尝试创建NSPersistentContainer
时,应用程序因臭名昭著的An NSManagedObject of class 'ClassName' must have a valid NSEntityDescription
而崩溃。
我尝试了什么:
检查持久化容器的名称是否与数据模型相同 selectingCurrent Product Module
for the model class module
【问题讨论】:
【参考方案1】:有什么帮助:
检查所有将使用CoreData
作为xcdatamodeld
文件的目标
为此:
-
选择
Project Navigator
中的xcdatamodeld
文件
在右侧打开Utilities
打开File Inspector
检查Target Membership
下所有需要的目标
【讨论】:
【参考方案2】:在将数据层移动到框架时,我也遇到了同样的问题。问题是NSPersistentContainer
默认在主包中查找实体描述,除非我们创建自定义子类。
所以解决方案是在嵌入式框架中创建NSPersistentContainer
的自定义子类,并使用它来代替父类。它应该可以解决问题。
【讨论】:
【参考方案3】:在我的情况下,它在我更改时已修复
let container = NSPersistentContainer(name: "Your Project Name Here")
到
let container = NSPersistentContainer(name: "Your Data Model Name Here")
在 Appdelegate.Swift 中
【讨论】:
以上是关于使用框架中的CoreData时如何解决“类'ClassName'的NSManagedObject必须具有有效的NSEntityDescription”的主要内容,如果未能解决你的问题,请参考以下文章
如何解决 AppDelegate 中的 coreData 错误?
如何从 WatchKit Extension 调用 CoreData 代理框架?
如何覆盖核心数据中的数据?如何解决Core Data中的重复数据?