如何在 CoreData 中正确建立复杂的关系?

How to build complex relationships in CoreData correctly?

我正在处理 CoreData,为了培训,我决定创建一个小应用程序来记录用户的收入和支出。 CoreData 教程都包含 To-Do-List 示例,我还没有找到任何对我有帮助的好示例。

// MARK: - Grammar 
// I want to apologize for grammatical errors in the text. Unfortunately,
// English is not my native language, so in some places I used a translator.

有什么不明白的地方,我一定会再解释一遍的。

当我开始考虑如何实现该应用程序时,我认为最方便的方法是保存所有用户操作并在应用程序中的正确位置进行计算。到此为止,比较抽象,因为在我看来这与问题关系不大,如果你需要更精确一点,我可以提供一个完整的思路。

所以,我要保存用户模型,它将包含以下数据:

用户操作(操作类型)- 将保存所有操作,每个操作包括执行操作的类别以及货币金额。

用户选择的类别(类别类型)- 添加操作时将用于支出或收入的类别。

Wallets(钱包类型)——用户的钱包,一切都很简单,名字,上面的余额。

预算单位(BudgetUnit 类型)- 这些是用户预算,包含类别及其预算。例如:产品 - 10.000 $

当我开始在 CoreData 中构建依赖项时,出现了一些奇怪的行为。

即用户与Budget Unit和Operation在同一类别模型上有关系。有些东西告诉我它不会那样工作。 我要用户分类是独立的,他选的,我要显示在主屏上,每次操作都会有自己的分类模型

上图中类别模型用了3次,同一个模型

这就是我大致表示我希望看到的数据结构的方式。不同的模型有自己的类别模型,相互独立。

我认为可以使用具有相同值的 3 个不同模型来实现,但在我看来,这种方法被认为是错误的。

那么你如何正确地实现数据模型,使一切都按预期工作?如有任何帮助,我将不胜感激!

--- 编辑 ---

作为问题的解决方案,我可以创建多个实体作为 Category(示例如下)

但我不知道这是否是个好习惯

我调查了其他几个开源项目并找到了解决问题的方法。

我希望这对以后的人有所帮助。

不需要为用户保存类别,您可以通过向它们添加 IsSelectedID 参数来简单地在应用程序中保存类别,以便在更改这些参数时您 select 一个类别,并立即了解您需要显示哪些类别。

对于预算和运营(交易),我们只需要保存类别ID立即显示正确的。

例如:

感谢 @JoakimDanielson@Moose 的帮助。它让我对这个问题有了不同的看法。