您好,我是Objective-c Coredata的新手
以下是该方案。
我有一个模型说车辆,其属性为 name , noOfWheels 。我在我的应用程序中对此模型执行CRUD操作。在应用程序启动时,我进行服务调用以检查模型是否更改。如果模型有变化,比如
1)新的属性公司已添加到车辆模型和
2)添加了一个名为公司的新模型,其中包含 name , country 等属性。
是否有可能以编程方式读取这些更改并在用户不知道更新的情况下更改我的架构?
我已经在coredata中进行了轻量级迁移,但他们说我们需要使用xcode创建其他xcdatamodel,然后以编程方式更改应用程序中的版本。
PS:我不想重新发布应用作为更新。想要同步进行。
答案 0 :(得分:0)
这不是不可能的,但它远非易事。您在模型编辑器中所做的一切都可以在代码中完成,但它会变得难看。
entities
上的NSManagedObjectModel
属性是可读/写的,因此您可以更改它。 properties
等NSEntityDescription
属性也是如此。核心数据的设计理念是假设您拥有的固定数据模型不需要比更新应用程序更频繁地进行更改。它希望您可以很好地规划数据模型以使其工作。如果你不能这样做,有几种可能性包括:
无论你如何处理它,都会动态地改变数据模型。假设你添加了你提到的Company
信息。然后怎样呢?您的代码不知道如何处理它,那么您甚至拥有该数据会有什么不同?您无法在不更改代码的情况下充分利用新数据,并且无法在不更新应用的情况下更改代码。