如何最好地将一个巨大的.sqlite数据库移动到旧的低内存iOS设备上的新目录中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何最好地将一个巨大的.sqlite数据库移动到旧的低内存iOS设备上的新目录中?相关的知识,希望对你有一定的参考价值。
对于我最新的应用程序更新,我必须将用户的Core Data .sqlite数据库从Documents目录移动到Application Support目录。我使用migratePersistentStore:toURL:options:withType:error:
方法。我正在与一个用户进行交易,该用户以某种方式设法在她的数据库中保存了足够的数据,以便它现在是一个惊人的9G。最重要的是,她的设备是iPad Air 1 - 它在五六年前出现时存在内存问题,现在是2018年,她正在运行最新的ios。 migratePersistentStore: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?
如何有效地将巨大的 sql 表加载到 asp.net 应用程序内存中以进一步迭代它?
如何最好地将 NetCDF 文件集合重新分块到 Zarr 数据集