以编程方式在运行时删除或添加属性到CoreData

时间:2018-03-02 12:20:34

标签: ios core-data attributes

我必须根据Objective C中的api响应创建和删除属性。 例如,现在我的api响应包含字段“ facebook ”,“ whatsapp ”和“ viber ”。但在将来,响应可以添加“ youtube ”。基于此响应,我必须删除实体“社交”的所有属性和值,并立即创建四个属性并设置值。 如何以编程方式执行此操作?因为默认的* .xcdatamodeld文件无法帮助我,对吧? 注意:我的项目是目标C。

1 个答案:

答案 0 :(得分:2)

数据模型在应用程序启动时是可变的 - 您可以在代码中完全构建模型,而不是使用模型编辑器。但是,只要加载持久性存储文件,必须将模型视为已修复。加载持久存储后的任何更改都将导致崩溃。这意味着在调用loadPersistentStores(completionHandler:)addPersistentStore(with:completionHandler:)之前必须进行任何更改。

亚历山大对可选属性的建议是一个很好的建议。如果您需要更加动态的模型,则需要创建一个新的相关实体,该实体将存储服务名称以及您需要保存的有关服务的任何信息。如果您这样做,您的Social实体将与称为Service之类的新实体建立多对多关系。 Service将有一个名为name的字符串属性,其值为twitter,facebook,youtube等。它还具有您需要保存的有关服务的任何其他属性。