在应用程序的新更新中从核心数据迁移到 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的主要内容,如果未能解决你的问题,请参考以下文章
在新的 Rails 项目中从 SQLite 更改为 PostgreSQL