gpt4 book ai didi

ios - 一对一到一对多的轻迁移

转载 作者:行者123 更新时间:2023-11-29 03:13:49 25 4
gpt4 key购买 nike

可以将一对一关系轻度迁移到一对多关系。架构已正确更新。即A->B变成A->>B

但是 A->B 中的一对一引用丢失了。我期待在迁移后访问 B 但它现在是一个没有任何人引用它的僵尸。

我是否必须创建一个映射模型才能工作?

最佳答案

创建映射模型将触发重量级迁移。大量迁移非常缓慢且占用大量内存。如果您在 iOS 上运行,那么您不想这样做。

如果自动迁移失败,那么您可能想要执行导出/导入类型迁移,而不是大量迁移。

本质上,对于导出/导入迁移,您需要遍历现有的核心数据模型并将其导出为其他格式(我喜欢使用 JSON),然后将其导入回新的数据模型。

如果你在桌面上,那么你绝对可以使用重度迁移。台式机有更多的可用内存、更大的 CPU 等。

更新

I thought of that but it is complicated. I have to first export when the app starts. Then change the model version of the xcdatamodelid to the next version programatically. Then let the light migration do its work. Then import. For each app launch after that I have to check if the model version is the latest so I know to migrate or not.

是的,这很复杂,尽管你不会这样做。另一种选择是执行重量级迁移,这有弹出内存、弹出看门狗的风险,并且需要更长的时间,从而造成较差的用户体验。

如果轻量级迁移无法完成某些任务,则需要进行重度迁移或手动迁移。大量迁移(使用映射模型)不是为 iOS 设计的。它是 OS X 时代的遗留物。是的,您可以让它工作,但它的性能不高。

进行手动迁移并不那么困难。作为启动过程的一部分,您无论如何都应该检查迁移事件。如果发生迁移事件,则您可以通过使用旧模型建立旧堆栈来继续进行手动迁移。 NSManagedObjectModel 有方法来解决这个问题。然后导出为 JSON,建立新堆栈并导入。

关于ios - 一对一到一对多的轻迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21906460/

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