在CoreData中复制Sqlite数据库文件内容

时间:2016-03-17 12:00:02

标签: ios objective-c sqlite core-data nsdocumentdirectory

我正在为之前使用手机缺口开发的iOS应用程序工作。它有一个用于存储数据的sqlite数据库。但是现在在使用本机开发相同的应用程序时,我使用核心数据来存储数据。

现在,当新的原生应用取代用户设备上的旧手机间隙应用时,我想将现有sqlite文件中的数据复制到核心数据中。

因此,当我在预先安装了手机间隙版本的设备上运行应用程序时,我的应用程序(本机)会替换旧版本,因为我使用相同的捆绑ID,但我无法找到路径那个sqlite文件。 sqlite文件是否仍然存在于文档目录中?

1 个答案:

答案 0 :(得分:0)

如果您的某个设备上仍然安装了示例旧数据库文件,则可以尝试使用Xcode中的Device manager从设备上下载应用程序。

然后打开捆绑包并搜索您的文件。然后,如果您知道它的位置/名称,您只需访问它,使用一些SQLite库读取它并将数据加载到您的CoreData后备存储中。请记住,您要么在NSUserDefaults中标记它,要么一起删除旧数据库,这样您的应用就不会继续迁移(然后可能会意外删除用户的新数据。)我会选择保留旧数据一个至少一个版本或2个,这样您就可以验证您的迁移是否正常运行,没有错误/删除过程中的用户数据。

提示:根据您的数据库显示用户某种进度或“迁移/优化数据库”的大小,这可能是一个好主意。因此,在迁移完成之前,您最终不会向用户添加更多数据。