如何在 Core Data 中建模 "Character-Inventory-Item" 模式
How to model a "Character-Inventory-Item" schema in Core Data
本质上,我正在尝试为一个角色建模,该角色拿着一个背包,里面装有来自预先确定的列表中的物品。到目前为止,我已经想出了这个。
我的主要问题是理解核心数据如何处理 Arrays/Lists 等。从我读到的由关系决定的内容来看,一个简单的角色 - 项目关系是我首先想到的,但我想要能够为从预先确定的项目中选择的每个项目添加自定义描述(可以在运行时由用户添加)。每个角色将只有一个 "backpack" 以及带有自定义描述和自定义 "amounts" 或计数的项目列表。
那个背包理论上可以有 2 件相同的物品,但有不同的描述,因此一件物品的计数为 2 并不总是合适的。
此外,还有多个角色配置文件的选项,因此这些物品可能属于多个不同的背包,但同样在 description/count 等
中有所不同
所以我想我的主要问题是了解 Core Data 如何处理列表。以及我如何正确解决这个问题以允许 "character-backpack-item" 关系。
谢谢!
短小精悍 clean-up:
1:将 item
中的属性添加到您的 BackPackItem
2:删除 item
实体
That backpack could theoretically have 2 of the same items but with
different descriptions
3:在您的 BackPackItem
中添加一个 属性 backpackItemID
并在您每次创建 BackPackItem
实体时为其分配一个唯一 ID。这样您就可以拥有多个具有相同信息但具有不同 ID 的项目。 (不需要,但我认为让事情更干净,在这里做你想做的事)
最后:
现在,当您获取时,您需要做的就是通过名称获取 Character
实体。在您的 NSFetchRequest
中,您将 BackPackItem
(关联的BackPackItems 作为关系命名)添加为 relationshipKeyPathsForPrefetching,所有 associatedBackPackItems
将自动为您获取。
现在假设您已经获取了一个 Character
,并且您想要访问它的 BackPackItem
--> character.associatedBackpackItems
为您提供了与该角色相关的所有项目。
本质上,我正在尝试为一个角色建模,该角色拿着一个背包,里面装有来自预先确定的列表中的物品。到目前为止,我已经想出了这个。
我的主要问题是理解核心数据如何处理 Arrays/Lists 等。从我读到的由关系决定的内容来看,一个简单的角色 - 项目关系是我首先想到的,但我想要能够为从预先确定的项目中选择的每个项目添加自定义描述(可以在运行时由用户添加)。每个角色将只有一个 "backpack" 以及带有自定义描述和自定义 "amounts" 或计数的项目列表。 那个背包理论上可以有 2 件相同的物品,但有不同的描述,因此一件物品的计数为 2 并不总是合适的。 此外,还有多个角色配置文件的选项,因此这些物品可能属于多个不同的背包,但同样在 description/count 等
中有所不同所以我想我的主要问题是了解 Core Data 如何处理列表。以及我如何正确解决这个问题以允许 "character-backpack-item" 关系。
谢谢!
短小精悍 clean-up:
1:将 item
中的属性添加到您的 BackPackItem
2:删除 item
实体
That backpack could theoretically have 2 of the same items but with different descriptions
3:在您的 BackPackItem
中添加一个 属性 backpackItemID
并在您每次创建 BackPackItem
实体时为其分配一个唯一 ID。这样您就可以拥有多个具有相同信息但具有不同 ID 的项目。 (不需要,但我认为让事情更干净,在这里做你想做的事)
最后:
现在,当您获取时,您需要做的就是通过名称获取 Character
实体。在您的 NSFetchRequest
中,您将 BackPackItem
(关联的BackPackItems 作为关系命名)添加为 relationshipKeyPathsForPrefetching,所有 associatedBackPackItems
将自动为您获取。
现在假设您已经获取了一个 Character
,并且您想要访问它的 BackPackItem
--> character.associatedBackpackItems
为您提供了与该角色相关的所有项目。