如何在Core Data中存储自定义(和重复)对象的数组?

时间:2016-09-11 19:08:47

标签: arrays swift core-data set

我的应用程序包含可以放在团队中的怪物对象。至关重要的是,同一种类的怪物不止一次出现在一个团队中。每个团队包含6个怪物。

最初,我在团队和怪物之间设置了多对多的关系。但是斯威夫特的套装不允许同一类型的怪物在团队中出现两次。这是一个问题,因为我的应用程序需要能够让同一个怪物不止一次出现在团队中。

我已经读过可以使用可转换或二进制类型在Core Data中存储数组。不幸的是,大多数资源都不在Swift中,我无法转换。这些途径之一是我需要的解决方案吗?如果是这样,我应该使用transformable还是二进制?最后(也是最重要的)我如何存储和检索自定义对象数组?我之前从未使用过NSCoding,也不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

我不会使用可转换或二进制属性,而是添加第三个实体:TeamMembershipTeamMembership对象表示Monster的单个实例是单个Team的成员。因此,TeamMembership对象必须与MonsterTeam建立一种关系。

每个Team将有六个成员,因此它与TeamMembership具有多对多的关系。同样地,每个Monster可能是多个Teams的成员(或者确实是多次Team的成员),因此它同样具有与{{1}的多对多关系}}

关系图看起来像这样:

enter image description here

通过此设置,完整的TeamMembership将与六个独立的,不同的Team对象相关联。每个对象都与一个TeamMembership相关。但是完全有可能两个(甚至全部六个)Monster个对象与同一个怪物有关,我希望它能满足你的要求。缺点是向TeamMembership添加Monster涉及创建新的Team对象并设置其与相关TeamMembershipTeam对象的关系,而不是只是直接在它们之间建立关系。