对于我最新的应用程序更新,我必须将用户的Core Data .sqlite数据库从Documents目录移动到Application Support目录。我使用migratePersistentStore:toURL:options:withType:error:
方法。我正在与一个用户进行交易,该用户以某种方式设法在她的数据库中保存了足够的数据,以便它现在是一个惊人的9G。最重要的是,她的设备是iPad Air 1 - 它在五六年前出现时存在内存问题,现在是2018年,她正在运行最新的iOS。 migratePersistentStore:toURL:options:withType:error:
方法使内存不足导致应用程序崩溃。但我没有办法让.sqlite到达必要的位置。谁能告诉我如何最好地处理这种情况?理想情况下,我可以在我的代码中做些什么 - 但我甚至会欣赏有关其他方法的建议,我可以帮助用户在此时手动移动该庞大的数据库!
我想你使用migratePersistentStore
是因为它是官方的方式。这是一个好方法,但有时你必须弄脏你的手:
This post显示CoreData可能会使用多个您必须移动的文件。您可以列出目录中的文件,使用正则表达式查找所有必须移动的文件,将它们移动到新位置,然后照常从新位置加载CoreData。
然而,这需要有必要的基础设施来实现这一目标。如果你想走这条路,你会明白的。
您可以将此隐藏在功能标记后面,仅用于代码,仅针对特定用户或在使用低内存崩溃后隐藏,因此不会影响不需要它的用户。