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

标签 ios sqlite core-data migrate nspersistentstore

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

最佳答案

我猜您使用了migratePercientStore,因为这是执行此操作的官方方法。这是一个好方法,但有时你必须弄脏你的手:

在加载之前在应用程序启动时手动移动数据库

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

然而,这需要有必要的基础设施才能做到这一点。如果你想走这条路,你会弄明白的。

您可以将其隐藏在功能标志后面,仅使用代码,仅针对特定用户或在内存不足时崩溃,这样就不会影响不需要它的用户。

关于ios - 如何最好地将巨大的 .sqlite 数据库移动到旧的低内存 iOS 设备上的新目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52133219/

相关文章:

ios - 在 iOS 中基于 scheme 管理 Pod

ios - UIPinchGestureRecognizer 在 Xamarin 中放大但不缩小

ios - 修改核心数据模型后重新创建类定义的更好方法?

swift - 如何在Core Data中保存一个实体的多个 "instances"?

ios - 在给定坐标附近,在 Swift、MapKit 和 corelocation 中打印 hello

ios - 将它用于 UIImageView 时 UIImage 失真

mysql - SQL查询忽略条件

php - 无法通过 php 5.3.0 写入 SQlite3 上的 chmod 777 数据库文件

python - 使用 Python、SQLite 和 HTML,我如何从数据库读取数据并打印到页面?

ios - 在 managedObjectContext 的开头插入 NSManagedObject