2014-03-06 78 views
0

我正在更新我的核心数据模型,以包括更多的实体和属性,并需要一些指导,当涉及到关系和NSManagedObjectSubclasses。核心数据轻量级迁移与NSManagedObject子类和关系

我已经按照这里的指导http://www.raywenderlich.com/27657/how-to-perform-a-lightweight-core-data-migration成功设法添加我的应用程序的新模型版本,添加一个具有属性的新实体并将关系设置为另一个实体。我也成功地更新了AppDelegate设置。

这工作得很好。不过,我需要为我的新实体生成一个NSManagedObject子类,并用它的NSManagedObjectSubclass更新与另一个实体的关系。

我已经测试了我的应用程序,它仍然在处理数据,但是如果我为新实体生成新的NSmanagedObject子类并为与此新实体有关系的其他实体重新生成NSManagedOBject子类,那是否需要我从模型不匹配的手机中删除应用程序?

我还没有尝试过,因为我需要在进行更改之前对其进行测试,但我需要一些关于此问题的指导。

+0

您是否在说您对模型进行了一些更改,在设备上进行了测试,并且您希望对模型进行额外的*更改?如果是这样,你使用任何类型的源代码控制? –

+0

谢谢特雷弗 - 对不起,我只是提供一些进一步的信息。我已经创建了一个新的模型,其中包含与现有模型的新实体和关系,更新了AppDelegate代码并在设备上进行了测试,并且工作正常。但是,我需要从新实体中生成一个新的NSManagedObject子类,并且还要将关系的另一端的实体重新生成为这个新实体..并且我还没有测试该部分,因为我担心这会影响现有数据库?或者它会好吗?没有文档指出使用轻量级的NSManagedObject子类 – amitsbajaj

回答

2

迁移仅影响持久性存储,请确保它与您的托管对象模型相匹配。

你NSManagedObject子类使用模型和持久性存储,但他们没有影响它。因此,您可以安全地继续下一步:确保您的NSManagedObject子类(以及您的应用程序的其他部分)已更新,以处理新更新的托管对象模型的结构。

但只是要说清楚:如果您再次更改型号(调整关系等),那么您的测试设备的数据库可能会变得不兼容,您可能需要重新开始迁移测试。

这就是为什么我问你是否使用源代码管理。您几乎可以肯定希望构建和安装应用程序的以前版本,以便您可以重复测试迁移。

+0

亲爱的特雷弗 - 我对最近的答复表示歉意,但这确实是非常有帮助的。正如你所说,今天早上与NSManagedObject子类一起工作,它不会影响模型,我可以从旧版本迁移。我使用内置在Xcode中的git,并且我有多个旧版本的应用程序副本,以及2个专用于旧版本的设备,因此我也可以测试这些迁移。非常感谢 - 这真的帮助我进步! – amitsbajaj

相关问题