基于文档的核心数据应用程序 - 添加和删除其他属性

时间:2017-02-12 20:19:52

标签: swift core-data nspersistentdocument

我有一个基于文档的核心数据应用程序,其中包含实体“语言”。该实体有两个永久属性“key”和“comments”。 是否可以在运行时以编程方式添加和删除其他属性(“language_1”,“language_2”等)?

我的目标是避免在用户只需要很少的时候用50个属性创建表(我不知道需要多少属性)。

或许我应该选择其他解决方案? :)

修改

案例说明: 当用户创建新文档时,表“Languages”只有2个属性“key”和“comments”。在处理文档期间,用户可以随时添加或删除语言 - 我的意思是属性(列)而不是表格中的行。

我的目标是拥有如下的动态实体。

database explanation

data structure

1 个答案:

答案 0 :(得分:0)

是的,这是可能的。但它可能不是你想要的。每当文档打开时,您都必须在运行时为每个文档重新创建修改后的托管对象模型。

看到你的草图后,我建议一个略有不同的模型。顺便说一下,最好的风格是使用实体的单数名词(“部分”,而不是“部分”),复数名词用于多个关系(“部分”,而不是“relSection”),并省略其属性中的实体名称( “评论”,而不是“sectionComment”)。

使用一个实体作为永久属性。称之为“Word”。 Word具有属性“注释”和“关键字”,以及多个关系“翻译”和“部分”。在“翻译”关系的另一端是一个翻译实体,它具有“文本”属性,也可能是语言的名称(作为字符串或另一种关系)。

这样的事情:

data model

对于您的第一个示例,您将拥有一个Word实例,3个翻译实例(.text = Home,Zuhause和Casa),以及3个语言实例(.name =英语,德语,西班牙语)。当你添加第二行时,你将获得1个Word实例,3个更多翻译实例,但还有0个语言。将新的翻译实例添加到现有语言的“翻译”关系中。