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

Swift 基于文档的核心数据应用程序-添加和删除其他属性,swift,core-data,nspersistentdocument,Swift,Core Data,Nspersistentdocument,我有一个基于文档的核心数据应用程序,带有实体“语言”。该实体有两个永久属性“key”和“comments”。 是否可以在运行时以编程方式添加和删除其他属性(“语言1”、“语言2”等) 我的目标是避免在用户只需要很少的属性(我不知道需要多少属性)时创建具有50个属性的表 或者我应该选择其他解决方案?:) 编辑 案例说明: 当用户创建新文档时,表“Languages”只有两个属性“key”和“comments”。在使用文档期间,用户可以随时添加或删除语言-我指的是属性(列),而不是表中的行 我的目标

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

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

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

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

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


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

看过你的草图后,我建议换一个稍微不同的模型。顺便说一下,最好的风格是对实体使用单数名词(“节”,而不是“节”),对多个关系使用复数名词(“节”,而不是“节”),并在属性中省略实体名称(“注释”,而不是“节注释”)

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

大概是这样的:


对于第一个示例,您将有一个Word实例、三个翻译实例(.text=Home、Zuhause和Casa)和三个语言实例(.name=English、derman、西班牙语)。添加第二行时,将再获得1个Word实例、3个翻译实例,但将再获得0种语言。将新的翻译实例添加到现有语言的“翻译”中“而不是关系。

谁或什么东西拥有这些语言对象?给我们一个不只是语言对象的完整示例,包括数据值。注意:核心数据中没有“表”或“列”或“行”。谢谢你,哈尔。你的解决方案是我的第二个方案:)BTH谢谢你的风格建议。