gpt4 book ai didi

ios - CoreData,每个模块不相关的数据 - 一个堆栈或每个模块?

转载 作者:行者123 更新时间:2023-11-29 10:42:57 26 4
gpt4 key购买 nike

在我们的应用程序中,我们目前需要存储完全不相关的不同“模块”的数据。我们想为此使用 Core Data。据我所知,我们有几个选择:

  1. 创建多个模型描述(每个“模块”一个),并为每个“模块”使用单独的核心数据堆栈
  2. 像#1 一样创建多个模型描述,但使用单个 CD 堆栈(我认为单个协调器可以通过使用“配置”来包含多个模块)
  3. 使用包含所有实体的一个配置创建单个模型描述,并使用单个堆栈
  4. 可能是上述的更多变体...

此外,所有这些选项都可以与单个托管对象上下文或多个托管对象上下文一起使用。

最好的方法是什么?

我倾向于使用选项 #1,即单独的模型描述文件、单独的协调器、单独的上下文,因为如前所述,“模块”是完全不相关的,如果一个“模块”做了某事,这实际上是一个错误与另一个实体。模块数据也有可能在与其他模块不同的时间单独进行版本控制/迁移,尽管我们还没有这方面的需求/用例。 (我也不知道 CD 版本控制是如何工作的,即是为整个模型设置某种版本,还是单独为每个实体设置某种版本?如果是前者,拆分成多个模型可能是一个优势)。

但也许使用选项 #1 太多了,而且过于复杂/过度设计,我应该不在乎,把所有东西都放在一个袋子里?

最佳答案

这里有一些帮助你的决定:

  1. 如果模块在很大程度上相似,我认为复制相同或几乎相同的模型信息就太多余了。在这种情况下,我更喜欢#2。
  2. 您可以使用多个商店。但是,这确实为您的项目增加了一些复杂性。根据数据的总体大小,多个存储可能是有意义的。如果数据量有限,没有理由不只使用一个商店。
  3. 多个存储区的常见用例是,一个只读静态数据,一个动态数据,您可以写入。我认为,如果它们在同一个商店中会影响性能的大型不同数据集也是使用多个商店的一个很好的理由。
  4. 迁移并不是真正的问题。在 CD 中,您可以创建新的实体和属性,更改它们的行为,将数据从一个复制到另一个,等等。您将对迁移进行非常精细的控制,因此这在任何一种情况下都不会改变。
  5. 在我看来,对“混淆”不应混合的数据的恐惧是不成立的。无论您的体系结构选择如何,程序中的逻辑都应确保正确的功能。

关于ios - CoreData,每个模块不相关的数据 - 一个堆栈或每个模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23593012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com