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

标签 arrays swift core-data set

我的应用程序有可以放在一个团队中的怪物对象。同一物种的怪物可以在一个团队中出现不止一次,这一点很关键。每队包含 6 个怪物。

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

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

最佳答案

我不会使用可转换或二进制属性,而是添加第三个实体:TeamMembership . TeamMembership对象表示 Monster 的单个实例成为单例成员(member)Team .所以 TeamMembership对象将与 Monster 具有一对一关系和 Team .

每个Team将有六个成员,因此它将与 TeamMembership 具有一对多关系.同样,每个 Monster可能会成为几个 Teams 的成员(或者实际上是同一个 Team 的成员多次)所以它同样与 TeamMembership 有一对多的关系。 .

关系图看起来像这样:

enter image description here

有了这个设置,一个完整的 Team将与六个独立的、不同的TeamMembership相关对象。这些对象中的每一个都将与一个 Monster 相关.但完全有可能两个(甚至全部六个)TeamMembership对象与同一个怪物相关,(我希望)满足您的要求。缺点是添加 MonsterTeam涉及创建一个新的 TeamMembership对象并设置其与相关 Team 的关系和 Monster对象,而不仅仅是直接设置它们之间的关系。

关于arrays - 如何在 Core Data 中存储一组自定义(和重复)对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39439679/

相关文章:

javascript - 在 for 循环 JavaScript 中创建一个数组

Java分而治之算法栈溢出错误

ios - 如何使用 swift 4 iOS 在特定时间间隔内更新用户的后台位置?

ios - NavigationController 中的 View 之间的序列无法正常工作

ios - 访问其他类的核心数据数据库

python - 连接并删除 numpy 数组中的重复元素

ios - iOS Swift 上的 Azure 推送通知

ios - 当我只是将数据存储在内存中(而不是磁盘)时,如何有效地删除我的核心数据存储?

ios - 从 Core Data 中检索单个对象

c++ - Eigen:从 C++ 数组高效实现矩阵