繁体   English   中英

如何在Objective-C中动态创建实体?

[英]How to create Entity dynamically in Objective-C?

我正在构建一个iPad应用程序,我需要用户动态创建实体。 我已经有3个程序使用的实体。
你能帮我解决一下代码怎么做?

我想根据我的理解了解整个结构我必须创建新的managedObjectModel,添加新实体,然后将其与现有实体合并,是否正确?

这是正确的 - 您将创建一个NSEntityDescription对象数组,然后在新的托管对象模型上调用setEntities: . 然后,最后,您将该模型与您的内置模型合并。

但请注意,一旦模型用于创建托管对象上下文(或用于存储),就无法更改模型。 更改模型后,您需要创建新的存储和上下文。

虽然可以在实践中动态创建新实体和新模型,但这非常复杂。 如果没有别的,您将不得不将任何现有的持久数据迁移到新模型和新的持久性存储文件。 如果您刚刚开始使用Core Data,我强烈建议不要尝试这种方法。

你有选择:

首先,你确定你真的需要一个新的实体吗? 刚开始使用Core Data的人经常将实体误认为是托管对象。 实体是管理对象,因为类是实例。 实体是用于创建对象图的抽象。 它们实际上并不包含数据。 您需要新实体的时间非常非常罕见。

其次,如果您确实需要某种动态实体,通常最好将动态实体分解为多个固定子实体,然后使用关系创建虚拟实体。 例如,您需要一个动态Person“实体”,因此您可以在模型中创建多个实体,每个实体都拥有该人员的一个属性。 您可以拥有一个Field实体,该实体具有fieldName属性,然后是fieldValue属性。 然后有一个实际的Person实体,它没有属性,只是与必要的Field对象的关系。 您可以向任何人添加所需的任何字段,然后通过将关系移动到其字段来重构虚拟人物对象。

但我很怀疑你需要那种灵活性。 这种需求非常罕见。 我会退后一步,确切地看到您认为用户可能需要输入的动态数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM