【问题标题】: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 而崩溃。

我尝试了什么:

【问题讨论】:

    标签: ios core-data


    【解决方案1】:

    有什么帮助:

    • 检查所有将使用CoreData 作为xcdatamodeld 文件的目标

    为此:

    1. 选择Project Navigator中的xcdatamodeld文件
    2. 在右侧打开Utilities
    3. 打开File Inspector
    4. 检查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 中

        【讨论】:

          猜你喜欢
          • 2018-01-08
          • 1970-01-01
          • 1970-01-01
          • 2018-12-06
          • 2021-03-28
          • 1970-01-01
          • 2021-10-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多