【问题标题】:How to model a "Character-Inventory-Item" schema in Core Data如何在 Core Data 中为“Character-Inventory-Item”模式建模
【发布时间】:2017-02-13 00:28:00
【问题描述】:

基本上,我正在尝试为一个拿着预定列表中物品的背包的角色建模。到目前为止,我已经想出了这个。

我的主要问题是了解核心数据如何处理数组/列表等。根据我所读到的由关系决定的内容,我首先想到的是一个简单的字符 - 项目关系,但我希望能够为从预先确定的项目中选择的每个项目添加自定义描述(用户可以在运行时添加)。每个角色将只有一个“背包”,其中包含带有自定义描述和自定义“数量”或计数的项目列表。 该背包理论上可以有 2 件相同的物品,但描述不同,因此一件物品的计数为 2 并不总是合适的。 此外,还有多个角色配置文件的选项,因此这些物品可能属于多个不同的背包,但在描述/数量等方面也有所不同。

所以我想我的主要问题是理解 Core Data 如何处理列表。以及我如何正确解决此问题以允许“字符-背包-物品”关系。

谢谢!

【问题讨论】:

    标签: ios core-data schema xcode8 inventory-management


    【解决方案1】:

    快速清理:

    1:将item 中的属性添加到您的BackPackItem

    2:删除itementity

    这个背包理论上可以有 2 件相同的物品,但 不同的描述

    3:将属性backpackItemID 添加到您的BackPackItem,并在您每次创建BackPackItem 实体时为其分配一个唯一ID。这样,您可以拥有多个具有相同信息但具有不同 ID 的项目。 (不需要,但我认为让事情更干净,在这里做你想做的)

    最后:

    现在,当您获取时,您需要做的就是例如通过名称获取Character 实体。在您的NSFetchRequest 中,您将BackPackItem(关联的BackPackItems 作为关系命名)添加为relationshipKeyPathsForPrefetching,所有associatedBackPackItems 将自动为您获取。

    现在假设您获取了一个 Character ,并且您想要访问它的 BackPackItem --> character.associatedBackpackItems 为您提供了与该角色相关的所有项目。

    【讨论】:

    • 谢谢,我可能需要一段时间来测试这一切,因为我还没有开始编写任何相关代码,但听起来不错!我现在就打勾,这样我就不会浪费任何人的时间了:)
    • @mccal99 NP,你的设置似乎很简单,所以这应该是最好的方法。拥有第三个关系只会让你的事情变得非常混乱。尽量让事情简单,你会得到干净的代码和更少的头痛。顺便说一句,我做了一个编辑,你不需要重命名为 itemS,item single 更正确。
    猜你喜欢
    • 2013-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多