0

我正在尝试在我的NSIncrementalStore Subclass的NSManagedObjectModel中添加一个新实体。我在 loadMetadata 方法中执行此操作,但它一直在最后一行抛出此异常。请参阅下面的代码

“NSInternalInconsistencyException”配置的实体必须已经在模型中

代码

var model:AnyObject=(self.persistentStoreCoordinator?.managedObjectModel.copy())!
var newEntity=NSEntityDescription()
newEntity.name="newEntity"
newEntity.managedObjectClassName="newEntity"

var entities=model.entitiesForConfiguration(self.configurationName)
entities?.append(newEntity)

model.setEntities(entities!, forConfiguration: self.configurationName)
4

2 回答 2

0

将模型添加到持久存储协调器后,您将无法对其进行修改。唯一可以操作模型的时间是在初始化之后并将其应用到NSPersistentStoreCoordinator.

于 2015-06-08T00:02:52.673 回答
0

文档对此并不清楚,但在调用被设置的实体之前,托管对象模型的数组setEntities:forConfiguration:中必须已经存在。entities这是因为此方法实际上将模型中的现有实体分配给特定配置。

这里的解决方案是制作数组的可变副本,entities如果实体不存在,则将它们添加到其中,然后将托管对象模型的实体数组设置为修改后数组的不可变副本。在那之后,您可以调用setEntities:forConfiguration:.

值得提交有关此行为的雷达错误报告。

于 2015-10-08T01:21:12.227 回答