我的xcmappingmodel中的自定义策略将不会被执行

时间:2011-06-22 15:02:14

标签: iphone ios core-data ios4 core-data-migration

我正在尝试为我的应用创建一个具有一些自定义代码的映射模型。因此我创建了一个xcmappingmodel,并且我将NSEntityMigrationPolicy子类化并实现了

createDestinationInstancesForSourceInstance

方法。此外,我在映射模型的“自定义策略”字段中输入了类名。不幸的是我的代码永远不会被调用(尝试过断点和日志)。我的商店使用以下选项创建:

NSMigratePersistentStoresAutomaticallyOption: YES
NSInferMappingModelAutomaticallyOption: YES

我正在使用XCode 4.0.2(并且也使用XCode 4.2进行了测试)。我所有其他“轻量级”迁移都顺利进行。我需要做什么才能让自定义迁移运行?

2 个答案:

答案 0 :(得分:2)

您的模型版本有何不同? Core Data必须认识到商店与模型不兼容(表示为NSManagedObjectModel对象)。这是通过创建每个实体的属性的哈希值并对这些值进行散列来表示每个实体的哈希值来完成的。如果这些值没有改变,则无法区分模型。

有关更改数据模型所需的更多信息可以帮助您。

答案 1 :(得分:2)

NSInferMappingModelAutomaticallyOption应设置为NO。

此外,如果模型没有不同,您可以在实体检查器中设置版本哈希修改器。然后Core Data会将模型识别为不同:

https://developer.apple.com/library/mac/documentation/cocoa/conceptual/CoreDataVersioning/Articles/vmUnderstandingVersions.html