核心数据实体的多个构建配置

时间:2019-03-11 15:24:38

标签: swift core-data entities buildconfiguration

我有3个构建配置,即Debug,Release和Development。对于开发,我创建了一个新方案,其中包含新的bundleID,产品名称等,因此我可以在手机上看到哪个是DEV和DEBUG。

我正在使用Core Data,并且对于具有原始bundleID的DEBUG来说,一切正常,但是当我切换为使用Development时,尝试创建名称为新实体时会出错:

NSEntityDescription.insertNewObject(forEntityName: "MyEntity", into: managedContext)

我得到的错误:

Could not cast value of type 'NSManagedObject_MyEntity_' (0x600002d62b20) to 'AppName_DEV.MyEntity' (0x102bf9368).

似乎正在尝试从我的“ AppName DEV”方案而不是“ AppName”中获取MyEntity类。我找不到任何可以指向使用相同模型的构建设置?

关于如何在多个构建配置中使用核心数据的任何想法?

1 个答案:

答案 0 :(得分:0)

好的,我发现了问题。由于我试图恢复一个最初用swift 2编写的非常老的应用程序,因此我想到我可能要仔细检查数据模型的创建方式。经过数小时的核心数据设置过程的修改,我改变了两件事,终于使它起作用。

1。)在.xcdatamodeld右侧的Data Model Inspector文件中,确保您拥有Module字段 EMPTY AppName Inside,与原始目标名称相同。

2。)我将@objc(EntityName)添加到了我拥有的NSManagedObject子类中。

  • 我当然清理了项目,从模拟器中删除了该应用,然后再次安装。

如果您有这样的问题,希望威士忌能为您带来帮助,祝您好运!