如何最好地将一个巨大的.sqlite数据库移动到旧的低内存iOS设备上的新目录中?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何最好地将一个巨大的.sqlite数据库移动到旧的低内存iOS设备上的新目录中?相关的知识,希望对你有一定的参考价值。

对于我最新的应用程序更新,我必须将用户的Core Data .sqlite数据库从Documents目录移动到Application Support目录。我使用migratePersistentStore:toURL:options:withType:error:方法。我正在与一个用户进行交易,该用户以某种方式设法在她的数据库中保存了足够的数据,以便它现在是一个惊人的9G。最重要的是,她的设备是iPad Air 1 - 它在五六年前出现时存在内存问题,现在是2018年,她正在运行最新的iosmigratePersistentStore:toURL:options:withType:error:方法使内存不足导致应用程序崩溃。但我没有办法让.sqlite到达必要的位置。谁能告诉我如何最好地处理这种情况?理想情况下,我可以在我的代码中做些什么 - 但我甚至会欣赏有关其他方法的建议,我可以帮助用户在此时手动移动该庞大的数据库!

答案

我想你使用migratePersistentStore是因为它是官方的方式。这是一个好方法,但有时你必须弄脏你的手:

Manually-moving database at app-start before you load it

This post显示CoreData可能会使用多个您必须移动的文件。您可以列出目录中的文件,使用正则表达式查找所有必须移动的文件,将它们移动到新位置,然后照常从新位置加载CoreData。

然而,这需要有必要的基础设施来实现这一目标。如果你想走这条路,你会明白的。

您可以将此隐藏在功能标记后面,仅用于代码,仅针对特定用户或在使用低内存崩溃后隐藏,因此不会影响不需要它的用户。

以上是关于如何最好地将一个巨大的.sqlite数据库移动到旧的低内存iOS设备上的新目录中?的主要内容,如果未能解决你的问题,请参考以下文章

如何最好地将应用程序从 sqlite(使用 fmdb)迁移到 CoreData?

如何最好地将 fb 评论从 http 移动到 https

如何有效地将巨大的 sql 表加载到 asp.net 应用程序内存中以进一步迭代它?

如何最好地将 NetCDF 文件集合重新分块到 Zarr 数据集

如何最好地将 mysql 数据实现为一行 javascript 代码?

如何最好地将 std::vector < std::string > 容器写入 HDF5 数据集?