我的应用程序包含可以放在团队中的怪物对象。至关重要的是,同一种类的怪物不止一次出现在一个团队中。每个团队包含6个怪物。
最初,我在团队和怪物之间设置了多对多的关系。但是斯威夫特的套装不允许同一类型的怪物在团队中出现两次。这是一个问题,因为我的应用程序需要能够让同一个怪物不止一次出现在团队中。
我已经读过可以使用可转换或二进制类型在Core Data中存储数组。不幸的是,大多数资源都不在Swift中,我无法转换。这些途径之一是我需要的解决方案吗?如果是这样,我应该使用transformable还是二进制?最后(也是最重要的)我如何存储和检索自定义对象数组?我之前从未使用过NSCoding,也不知道从哪里开始。
答案 0 :(得分:1)
我不会使用可转换或二进制属性,而是添加第三个实体:TeamMembership
。 TeamMembership
对象表示Monster
的单个实例是单个Team
的成员。因此,TeamMembership
对象必须与Monster
和Team
建立一种关系。
每个Team
将有六个成员,因此它与TeamMembership
具有多对多的关系。同样地,每个Monster
可能是多个Teams
的成员(或者确实是多次Team
的成员),因此它同样具有与{{1}的多对多关系}}
关系图看起来像这样:
通过此设置,完整的TeamMembership
将与六个独立的,不同的Team
对象相关联。每个对象都与一个TeamMembership
相关。但是完全有可能两个(甚至全部六个)Monster
个对象与同一个怪物有关,我希望它能满足你的要求。缺点是向TeamMembership
添加Monster
涉及创建新的Team
对象并设置其与相关TeamMembership
和Team
对象的关系,而不是只是直接在它们之间建立关系。