在应用程序的新更新中从核心数据迁移到 sqlite

Posted

技术标签:

【中文标题】在应用程序的新更新中从核心数据迁移到 sqlite【英文标题】:Migrating from Core data to sqlite in new update of app 【发布时间】:2013-08-19 13:58:39 【问题描述】:

我有一个使用核心数据的应用程序(比如 1.0 版),现在我已经使用 sqlite 更新了该应用程序,而对于新的更新,我根本没有使用核心数据(我们称之为 1.1 版),但是我保留了我的数据库名称和表的所有列名,与之前的核心数据应用程序相似。

我的疑问是,如果用户更新到使用 sqlite 的新版本(1.1)会有什么主要或次要影响。如果是的话,它会不会有某种数据丢失或任何崩溃,那么请通过提供任何链接或建议来指导我

为了避免数据丢失,我计划按照本文所述将数据从核心数据分块传输到 sqlite 应用程序,所以我这样做是否正确,如果我错过了任何有价值的步骤,请告诉我。

Migrating user data stored in sqlite to core data in app upgrade

谢谢

【问题讨论】:

您是否尝试过通过升级自己的应用程序来进行测试? 【参考方案1】:

如果您的操作正确且语法正确,用户就不会丢失任何数据。 我的理解是,在您的下一个版本的应用程序中,您将通过任何 sqlite 框架管理数据,那么您只需要 .sqlite 数据文件。要获取它的 .sqlite 文件路径,您可以:

NSString *dataFilePath = [[[self applicationDocumentsDirectory] path]
                           stringByAppendingPathComponent: @"YourAppName.sqlite"];
    NSURL *dataFileUrl = [NSURL fileURLWithPath:storePath];

applicationDocumentsDirectory方法这样实现时:

- (NSURL *)applicationDocumentsDirectory

return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];

如果我理解不正确,请写在 cmets 中。

【讨论】:

感谢回复,旧数据会自动迁移到新的sqlite文件还是需要添加旧版本数据迁移到新版本的代码? 迁移需要添加代码。可能我不完全理解你。我写的是,如何获取旧 .sqlite 文件的路径。您可以将此文件复制到您想要的位置并使用它。事实上,如果您使用核心数据,您只需使用核心数据方法管理此文件的数据,如果您有 .sqlite 文件,则可以使用其他框架方法(不是核心数据框架)管理其数据。如果我的回答对你有帮助,请检查一下。 例如:一旦我开发了一个应用程序,我需要创建一些数据。我使用核心数据框架工作创建了一个 sqllite 文件,在管理此 .sqlite 文件的数据后,我使用任何 sqlite 框架的 SQLiteAccess 类。

以上是关于在应用程序的新更新中从核心数据迁移到 sqlite的主要内容,如果未能解决你的问题,请参考以下文章

从 Sqlite 迁移到 CoreData

在新的 Rails 项目中从 SQLite 更改为 PostgreSQL

核心数据迁移真的很慢,为啥会这样?

我没有在新版本中迁移NSPersistentStore,我可以通过应用更新进行恢复吗?

核心数据迁移机制是不是会处理预填充实体上的新数据?

在 Android 中从服务器数据库获取数据到 Sqlite 数据库