以编程方式在运行时删除或添加属性到CoreData
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了以编程方式在运行时删除或添加属性到CoreData相关的知识,希望对你有一定的参考价值。
我必须根据Objective C中的api响应创建和删除属性。例如,现在我的api响应包含字段“facebook”,“whatsapp”和“viber”。但是将来响应可以添加“youtube”。基于此响应,我必须删除实体“社交”的所有属性和值,并立即创建四个属性并设置值。如何以编程方式执行此操作?因为默认的* .xcdatamodeld文件无法帮助我,对吧?注意:我的项目是客观的C.
应用程序启动时数据模型是可变的 - 您可以在代码中完全构建模型,而不是使用模型编辑器。但是只要加载持久性存储文件,就必须将模型视为已修复。加载持久存储后的任何更改都将导致崩溃。这意味着在调用loadPersistentStores(completionHandler:)
或addPersistentStore(with:completionHandler:)
之前必须进行任何更改。
亚历山大对可选属性的建议很好。如果您需要更加动态的模型,则需要创建一个新的相关实体,该实体将存储服务名称以及您需要保存的有关服务的任何信息。如果你这样做,你的Social
实体将与一个名为Service
的新实体有很多关系。 Service
将有一个名为name
的字符串属性,其值将包含twitter,facebook,youtube等。它还具有您需要保存的有关服务的其他任何属性。
您可以提前创建所有4个字段,只需将它们作为可选项,并根据服务器响应填充它们。但是您无法在运行时添加新属性。你的*.xcdatamodeld
文件编译成*.momd
,它包含在数据库中创建表的所有数据,因为默认情况下Core Data与SQLite一起工作,它是一个关系数据库管理系统。
要使属性可选,您应该检查它。
然后新创建的对象包含nil
作为对象属性的默认值。因此,在您的情况下,Social
对象的“youtube”属性将只是nil
。
以上是关于以编程方式在运行时删除或添加属性到CoreData的主要内容,如果未能解决你的问题,请参考以下文章