gpt4 book ai didi

iphone - 我们可以为 Core Data 使用两个具有相同表的 sqlite 数据库的联合吗?

转载 作者:行者123 更新时间:2023-12-03 18:41:03 25 4
gpt4 key购买 nike

我有一个带有预填充 sqlite“基线”数据库的 iPhone Core Data 应用程序。我可以添加第二个较小的 sqlite 数据库吗所有单个数据源?

我的想法是:

1)“基线”数据库永远不会改变。

2)我可以在需要时下载较小的“补充”sqlite数据库以获取更多数据(我假设允许下载sqlite数据库,否则请发表评论)。

3) Core Data 然后能够合并来自 1 和 2 的数据。然后我可以通过调用我定义的 Core Data 托管对象模型来引用这个统一的数据。

希望这是有道理的。

提前致谢。

最佳答案

Core Data 旨在通过 – addPersistentStoreWithType:configuration:URL:options:error: 处理多个数据文件。方法。这将允许您将所有数据文件组合在一起,然后通过单个 NSManagedObjectContext 访问它们。 .

您唯一的问题,甚至可能不是您的问题,是存储文件不能直接相互引用。因此,您将需要通过唯一标识符“手动”引用文件之间的数据。但是我怀疑你已经意识到了这个限制。

手动关系

这个想法是,当“关系”中的两个对象都在一个模型和一个文件中时,Core Data 会发挥它的魔力并为您处理所有的引用完整性。但是,当它们位于不同的文件和/或模型中时,这不会再自动发生。

此问题的解决方案是使用获取的属性来查找某个唯一标识符来检索您希望位于关系另一端的实体(或多个实体)。这将为您提供文件之间的“弱”关系。

这样做时要注意的一件事。当某些事情发生变化时,获取的属性不会自动更新。这意味着当数据更改会导致该关系发生更改时,您的应用程序不会自动意识到它,您将需要再次请求该属性以获取更新的关系信息。

希望这使它更清楚一点。

获取的属性和关系的共存

它们绝对可以共存,但要意识到它们是两个独立的属性。如果您希望您的 Controller 代码将它们视为一个,那么我建议为该实体构建一个子类,然后在其中添加一个便捷方法,该方法同时满足关系和获取的属性,然后将它们汇总为一个 NSArrayNSSet在将其返回到您的 Controller 代码之前。

关于iphone - 我们可以为 Core Data 使用两个具有相同表的 sqlite 数据库的联合吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904917/

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