gpt4 book ai didi

iphone - 退出核心数据迁移?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:46:58 27 4
gpt4 key购买 nike

我有一个带有非常大的 Core Data 数据库的应用程序。在过去的一年里,我对它进行了多次版本控制。

上次我对数据库进行版本控制时,我对一个实体做了一个简单的更改:我添加了一个新的可选属性。由于某种原因,它不会使用轻量级迁移进行迁移。很久以后我才发现这是由于 Apple 的轻量级迁移代码中的一个错误导致的,该错误由我在另一个版本控制中需要的“重命名标识符”引起。

无论如何,我离题了......

由于错误使我无法使用轻量级迁移,我创建了一个映射文件来帮助迁移,但我不明白这将是一个更繁重的过程,并且会迫使我的用户在应用程序加载时等待在进行迁移时将整个数据库存入内存。事实证明,对于非常大的数据库,这根本不是一个真正的选择,而且由于内存问题等原因,我的许多用户根本无法迁移数据库。

所以现在我想重新发布我的应用程序并解决这个问题。问题是,我的一些用户有一个数据库,该数据库以某种方式标记为“正在迁移”。即使使用我的新代码(它摆脱了映射文件并支持轻量级迁移),处于这种状态(“正在迁移”)的用户似乎也不会被重置。

我有哪些退出迁移的选项?- 我可以检测到我处于这种状态,因为在文档目录中有一个“.myDB.sqlite.migrationdestination_41b5a6b5c6e848c462a8480cd24caef3”文件。删除此文件不会清除迁移。我的猜测是数据库以某种方式被标记为处于这种状态,或者已经部分迁移。- 我可以检测到这种状态,然后完全删除数据库。但这会迫使我的用户重新下载他们的数据。

有什么想法吗?

谢谢你的帮助。

最佳答案

我唯一想到的就是破解受影响文件的 SQL 存储并查找标志或其他可能表明数据库处于暂时状态的东西。您也许可以直接写入文件并更改某些内容。

这真是个丑陋的问题。

关于iphone - 退出核心数据迁移?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5422688/

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